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.