Moshe Moshe - 15 days ago 5
Python Question

Allowing a specific value for an Argparse argument

Is it possible to require that an

argparse
argument be one of a few preset values?

My current approach is would be to examine the argument manually and if it's not one of the allowed values call
print_help()
and exit.

Here's the current implementation:

...
parser.add_argument('--val', dest='val', action='store',
help='Special testing value')

args = parser.parse_args(sys.argv[1:])
if args.val not in ['a','b','c']:
parser.print_help()
sys.exit(1)


It's not that this is particularly difficult, but rather that it appears to be messy.

Answer

An argparse argument can be limited to specific values with the choices parameter:

...
parser.add_argument('--val', dest='val', action='store',
                      choices=['a','b','c'],
                      help='Special testing value')

args = parser.parse_args(sys.argv[1:])

See the docs for more details.

Comments