I want to distinguish between these three cases:
- The flag is not present at all
python example.py
;
- The flag is present but without a value
python example.py -t
; and
- The flag is present and has a value
python 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:
- The
default
value;
- The
const
value; and
'~/some/path'
respectively.