Python argparse: default value or specified value Python argparse: default value or specified value python python

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 arguments
  • const=1 sets the default when there are 0 arguments
  • type=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