web-dev-qa-db-fra.com

Autoriser des valeurs spécifiques pour un argument Argparse

Est-il possible d'exiger qu'un argument argparse soit l'une des quelques valeurs prédéfinies?

Mon approche actuelle consiste à examiner l'argument manuellement et s'il ne s'agit pas d'une des valeurs autorisées, appelez print_help() et quittez.

Voici l'implémentation actuelle:

...
parser.add_argument('--val',
                      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)

Ce n'est pas que ce soit particulièrement difficile, mais plutôt que cela semble être désordonné.

77
Moshe

Un argument argparse peut être limité à des valeurs spécifiques avec le paramètre choices:

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

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

Voir docs pour plus de détails.

134
Moshe