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