2013-04-05 21 views
35

​​引数をいくつかのプリセット値の1つにすることは可能ですか?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) 

それは、これは特に困難であることが、むしろ厄介なように見えることはありません。

+0

うわー、あなたはこれにすばやく答えました。:-P – mgilson

+2

私はIRCの質問をしましたが、回答を得ておらず、ここにすべて書きました。私が質問を磨くとき、私はそれを文書で気づいた。質問はまだSOにはなかったので、自己回答のための良い候補のように思えました。 – Moshe

+3

そして、[メタ](http://meta.stackexchange.com/questions/2706/posting-and-answering-questions-you-have-already-found-the-answer-to)によると、これはサイトの設計目標そのことを念頭に置いて、+1(または+2:-P) – mgilson

答えて

56

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を参照してください。

+0

あなた自身の質問にすぐに答えましたか?なぜ頼むの? – viddik13

+5

質問のコメントを参照してください。 – Moshe

+1

'--val'と' dest = 'val''は冗長です。後者は省略することができ、 '--val'から派生します –

関連する問題