web-dev-qa-db-ja.com

Argparse引数に特定の値を許可する

argparse引数がいくつかのプリセット値の1つであることを要求することは可能ですか?

私の現在のアプローチは、引数を手動で調べ、許可された値のいずれでもない場合は、print_help()を呼び出して終了することです。

現在の実装は次のとおりです。

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

これが特に難しいのではなく、面倒そうです。

77
Moshe

Argparse引数は、choicesパラメーターを使用して特定の値に制限できます。

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

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

詳細については、 docs を参照してください。

134
Moshe