For flags (options starting with -
or --
) pass in options with the flags. You can specify multiple options:
parser.add_argument('-i', '--inputdir', help="Specify the input directory")
See the name or flags option documentation:
The
add_argument()
method must know whether an optional argument, like-f
or--foo
, or a positional argument, like a list of filenames, is expected. The first arguments passed toadd_argument()
must therefore be either a series of flags, or a simple argument name.
Demo:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-i', '--inputdir', help="Specify the input directory")
_StoreAction(option_strings=['-i', '--inputdir'], dest="inputdir", nargs=None, const=None, default=None, type=None, choices=None, help='Specify the input directory', metavar=None)
>>> parser.print_help()
usage: [-h] [-i INPUTDIR]
optional arguments:
-h, --help show this help message and exit
-i INPUTDIR, --inputdir INPUTDIR
Specify the input directory
>>> parser.parse_args(['-i', '/some/dir'])
Namespace(inputdir="/some/dir")
>>> parser.parse_args(['--inputdir', '/some/dir'])
Namespace(inputdir="/some/dir")
However, the first element for required arguments is just a placeholder. -
and --
options are always optional (that’s the command line convention), required arguments are never specified with such switches. Instead the command-line help will show where to put required arguments with a placeholder based on the first argument passed to add_argument()
, which is to be passed in without dashes.
If you have to break with that convention and use an argument starting with -
or --
that is required anyway, you’ll have to do your own checking:
args = parser.parse_args()
if not args.inputdir:
parser.error('Please specify an inputdir with the -i or --inputdir option')
Here the parser.error()
method will print the help information together with your error message, then exit.