Python argparse: default value or specified value
import argparseparser = argparse.ArgumentParser()parser.add_argument('--example', nargs='?', const=1, type=int)args = parser.parse_args()print(args)
% test.py Namespace(example=None)% test.py --exampleNamespace(example=1)% test.py --example 2Namespace(example=2)
nargs='?'
means 0-or-1 argumentsconst=1
sets the default when there are 0 argumentstype=int
converts the argument to int
If you want test.py
to set example
to 1 even if no --example
is specified, then include default=1
. That is, with
parser.add_argument('--example', nargs='?', const=1, type=int, default=1)
then
% test.py Namespace(example=1)
Actually, you only need to use the default
argument to add_argument
as in this test.py
script:
import argparseif __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--example', default=1) args = parser.parse_args() print(args.example)
test.py --example% 1test.py --example 2% 2
Details are here.
The difference between:
parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)
and
parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)
is thus:
myscript.py
=> debug is 7 (from default) in the first case and "None" in the second
myscript.py --debug
=> debug is 1 in each case
myscript.py --debug 2
=> debug is 2 in each case