How do I add an optional flag to my command line args?
eg. so I can write
python myprog.py
or
python myprog.py -w
I tried
parser.add_argument('-w')
But I just get an error message saying
Usage [-w W]
error: argument -w: expected one argument
which I take it means that it wants an argument value for the -w option. What's the way of just accepting a flag?
I'm finding http://docs.python.org/library/argparse.html rather opaque on this question.
Adding a quick snippet to have it ready to execute:
Source: myparser.py
Usage:
Here's a quick way to do it, won't require anything besides
sys
.. though functionality is limited:flag = "--flag" in sys.argv[1:]
[1:]
is in case if the full file name is--flag
As you have it, the argument w is expecting a value after -w on the command line. If you are just looking to flip a switch by setting a variable
True
orFalse
, have a look at http://docs.python.org/dev/library/argparse.html#action (specifically store_true and store_false)where
action='store_true'
impliesdefault=False
.Conversely, you could have
action='store_false'
, which impliesdefault=True
.