Let’s say the user types:
./args.py --create --mem 5
and my parser looks like this:
parser.add_argument('--create', nargs='*', default=None)
Normally --create
takes a list with nargs='*'
, however in this case the user passed nothing.
What I would like to happen is that --create
is set to the default value when invoked, instead I get []
Question: Is there anyway to detect if --create
shows up in the command line arguments without anything after it?
Advertisement
Answer
Here is a simple code snippet:
import argparse parser = argparse.ArgumentParser() parser.add_argument('--create', nargs='*', default=None) options = parser.parse_args() print(options)
Here are a few interactions:
$ ./args.py Namespace(create=None) $ ./args.py --create Namespace(create=[]) $ ./args.py --create one Namespace(create=['one']) $ ./args.py --create one two Namespace(create=['one', 'two'])
As you can see, if the user does not add the --create
flag, it is None
. If the user use --create
flag with nothing, you get an empty list.