]> granicus.if.org Git - python/commitdiff
bpo-37726: Prefer argparse over getopt in stdlib tutorial (#15052)
authormental <m3nta1@yahoo.com>
Thu, 1 Aug 2019 14:17:30 +0000 (15:17 +0100)
committerGuido van Rossum <gvanrossum@gmail.com>
Thu, 1 Aug 2019 14:17:30 +0000 (07:17 -0700)
Doc/tutorial/stdlib.rst
Misc/NEWS.d/next/Documentation/2019-07-31-11-40-06.bpo-37726.h-3o9a.rst [new file with mode: 0644]

index e030f8f19b48de3ee95b4ab591848ccd682b4e6d..f32063e7f0960a50027d1b6b7867cd7f7efc9e61 100644 (file)
@@ -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:
 
diff --git a/Misc/NEWS.d/next/Documentation/2019-07-31-11-40-06.bpo-37726.h-3o9a.rst b/Misc/NEWS.d/next/Documentation/2019-07-31-11-40-06.bpo-37726.h-3o9a.rst
new file mode 100644 (file)
index 0000000..195e975
--- /dev/null
@@ -0,0 +1,2 @@
+Stop recommending getopt in the tutorial for command line argument parsing
+and promote argparse.