I want to distinguish between these three cases:
python example.py
;python example.py -t
; andpython example.py -t ~/some/path
.How can I do this with Python argparse
? The first two cases would be covered by action='store_true'
but then the third case becomes invalid.
You can do this with nargs='?'
:
One argument will be consumed from the command line if possible, and produced as a single item. If no command-line argument is present, the value from default will be produced. Note that for optional arguments, there is an additional case - the option string is present but not followed by a command-line argument. In this case the value from const will be produced.
Your three cases would give:
default
value;const
value; and'~/some/path'
respectively. For example, given the following simple implementation:
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('-t', nargs='?', default='not present', const='present without value')
print(parser.parse_args().t)
You'd get this output:
$ python test.py
not present
$ python test.py -t
present without value
$ python test.py -t 'passed a value'
passed a value
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With