user972946
user972946

Reputation:

How to parse on/off (debug) flag using argparse?

My CLI program uses a --debug flag to decide whether or not to print debug messages. When --debug is specified, it should print debug messages; otherwise, it should not print debug messages.

My current approach is:

parser.add_argument('--debug', help='print debug messages to stderr', nargs='?')

However, the --help message suggests that this approach does not achieve my goal:

optional arguments:
  -h, --help       show this help message and exit
  --debug [DEBUG]  print debug messages to stderr

As you can see, it wants a value after the flag; however, --debug is an on/off argument.

What should I do instead?

Upvotes: 7

Views: 9145

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1125258

Use the store_true action instead:

parser.add_argument(
    '--debug',
    action='store_true', 
    help='print debug messages to stderr'
)

nargs='?' should only be used for options that take one or more arguments (with a fallback to a default value).

Upvotes: 11

Related Questions