Skip to content

Commit

Permalink
bpo-37726: Prefer argparse over getopt in stdlib tutorial (#15052)
Browse files Browse the repository at this point in the history
  • Loading branch information
mental32 authored and gvanrossum committed Aug 1, 2019
1 parent 0d30ae1 commit 2491134
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
19 changes: 15 additions & 4 deletions Doc/tutorial/stdlib.rst
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,21 @@ three`` at the command line::
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

The :mod:`getopt` module processes *sys.argv* using the conventions of the Unix
:func:`getopt` function. More powerful and flexible command line processing is
provided by the :mod:`argparse` module.

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!')

.. _tut-stderr:

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Stop recommending getopt in the tutorial for command line argument parsing
and promote argparse.

0 comments on commit 2491134

Please sign in to comment.