diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-11-18 06:17:14 (GMT) |
---|---|---|
committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2019-11-18 06:17:14 (GMT) |
commit | 39134b374fd506c5f0f6d232e259ba48c651d88f (patch) | |
tree | 9cb4dfb061a00795f6d9d9ab72af3b101c522e68 /Doc | |
parent | 20a4f6cde65549fd0252eb8c879963e0e8b40390 (diff) | |
download | cpython-39134b374fd506c5f0f6d232e259ba48c651d88f.zip cpython-39134b374fd506c5f0f6d232e259ba48c651d88f.tar.gz cpython-39134b374fd506c5f0f6d232e259ba48c651d88f.tar.bz2 |
bpo-38678: Improve argparse example in tutorial (GH-17207) (GH-17212)
(cherry picked from commit 04c79d6088a22d467f04dbe438050c26de22fa85)
Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/argparse.rst | 4 | ||||
-rw-r--r-- | Doc/tutorial/stdlib.rst | 32 |
2 files changed, 20 insertions, 16 deletions
diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 5a61a5b..e1b28e3 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -782,10 +782,12 @@ how the command-line arguments should be handled. The supplied actions are: example, this is useful for increasing verbosity levels:: >>> parser = argparse.ArgumentParser() - >>> parser.add_argument('--verbose', '-v', action='count') + >>> parser.add_argument('--verbose', '-v', action='count', default=0) >>> parser.parse_args(['-vvv']) Namespace(verbose=3) + Note, the *default* will be ``None`` unless explicitly set to *0*. + * ``'help'`` - This prints a complete help message for all the options in the current parser and then exits. By default a help action is automatically added to the parser. See :class:`ArgumentParser` for details of how the diff --git a/Doc/tutorial/stdlib.rst b/Doc/tutorial/stdlib.rst index 20ad356..1b89056 100644 --- a/Doc/tutorial/stdlib.rst +++ b/Doc/tutorial/stdlib.rst @@ -72,21 +72,23 @@ three`` at the command line:: >>> print(sys.argv) ['demo.py', 'one', 'two', 'three'] -The :mod:`argparse` module provides a mechanism to process command line arguments. -It should always be preferred over directly processing ``sys.argv`` manually. - -Take, for example, the below snippet of code:: - - >>> import argparse - >>> from getpass import getuser - >>> parser = argparse.ArgumentParser(description='An argparse example.') - >>> parser.add_argument('name', nargs='?', default=getuser(), help='The name of someone to greet.') - >>> parser.add_argument('--verbose', '-v', action='count') - >>> args = parser.parse_args() - >>> greeting = ["Hi", "Hello", "Greetings! its very nice to meet you"][args.verbose % 3] - >>> print(f'{greeting}, {args.name}') - >>> if not args.verbose: - >>> print('Try running this again with multiple "-v" flags!') +The :mod:`argparse` module provides a more sophisticated mechanism to process +command line arguments. The following script extracts one or more filenames +and an optional number of lines to be displayed:: + + import argparse + + parser = argparse.ArgumentParser(prog = 'top', + description = 'Show top lines from each file') + parser.add_argument('filenames', nargs='+') + parser.add_argument('-l', '--lines', type=int, default=10) + args = parser.parse_args() + print(args) + +When run at the command line with ``python top.py --lines=5 alpha.txt +beta.txt``, the script sets ``args.lines`` to ``5`` and ``args.filenames`` +to ``['alpha.txt', 'beta.txt']``. + .. _tut-stderr: |