Python argparse: default value or specified value

Python argparse: default value or specified value

import argparse
parser = argparse.ArgumentParser()
parser.add_argument(--example, nargs=?, const=1, type=int)
args = parser.parse_args()
print(args)

% test.py 
Namespace(example=None)
% test.py --example
Namespace(example=1)
% test.py --example 2
Namespace(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)

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

Python argparse: default value or specified value

Leave a Reply

Your email address will not be published.