2012-11-09 12 views
6

私は(例えば)3つの引数があるスクリプトたい:Pythonスクリプトを1つの引数だけを受け入れるように制限するにはどうすればよいですか? (argparse)

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("--a",help="Argument a") 
parser.add_argument("--b",help="Argument b") 
parser.add_argument("--c",help="Argument c") 
args= parser.parse_args() 

をしかし、どちらか一方のみ「A」、「B」、または「Cを指定することのみ可能であるようにそれを作りますどんな時でも'a'は指定できますが 'b'や 'c'は指定できませんこれは可能ですか?どのように達成できますか?

答えて

10

argpaseではadd_mutually_exclusive_group()メソッドを使用してこれを指定できます。

import argparse 
parser = argparse.ArgumentParser() 
g = parser.add_mutually_exclusive_group() 
g.add_argument("--a",help="Argument a") 
g.add_argument("--b",help="Argument b") 
g.add_argument("--c",help="Argument c") 
args= parser.parse_args() 
+0

ありがとうございました。ちょうど私が探していたもの。 – Sheldon

+1

@Alfe - その編集に感謝します! – bgporter

1

すでに​​レベルでこれを確認するために、上記のadd_mutually_exclusive_group()を使用してください。

エラーメッセージなどの詳細に制御することが好きなら、あなたはもちろん、後で結果を確認することができます。

if len([x for x in args.a, args.b, args.c if x is not None]) > 1: 
    raise Exception("Not allowed!") 
関連する問題