You can do this with nargs='?' :
One argument will be used from the command line, if possible, and produced as a unit. If the command line argument is missing, the default value will be returned. Note that for optional arguments, there is an additional case - an option line 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:
- Value
default ; - Value
const ; and '~/some/path'
respectively. For example, the following simple implementation is provided:
from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument('-t', nargs='?', default='not present', const='present without value') print(parser.parse_args().t)
You will 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
source share