Подтвердить что ты не робот

Разрешение определенного значения аргумента Argparse

Можно ли требовать, чтобы аргумент argparse был одним из нескольких заданных значений?

Моим нынешним подходом было бы изучить аргумент вручную, и если это не одно из разрешенных значений, вызовите print_help() и выйдите.

Здесь текущая реализация:

...
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)

Это не то, что это особенно сложно, а скорее, что это кажется грязным.

4b9b3361

Ответ 1

Аргумент argparse может быть ограничен конкретными значениями с параметром choices:

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

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

Подробнее см. docs.