あなたは本当にが実行された後しかし、あなたがそれを行うことができ、でそれを行うことができませんでした。ここで
は一例です:
parser = argparse.ArgumentParser()
# group 1
parser.add_argument("-q", "--query", help="query", required=False)
parser.add_argument("-f", "--fields", help="field names", required=False)
# group 2
parser.add_argument("-a", "--aggregation", help="aggregation",
required=False)
私はここにMongoDBを問い合わせるためのコマンドラインラッパーに与えられたオプションを使用しています。 collection
インスタンスは、aggregate
メソッドまたはfind
メソッドをオプションの引数query
とfields
と一緒に呼び出すことができるため、最初の2つの引数が互換性があり、最後の引数が互換性がない理由がわかります。
は、だから今、私はparser.parse_args()
を実行し、それがコンテンツだチェック:もちろん
args = parser().parse_args()
print args.aggregation
if args.aggregation and (args.query or args.fields):
print "-a and -q|-f are mutually exclusive ..."
sys.exit(2)
、この小さなハックだけの単純な例のために働いていると、それはあなたが相互に多くを持っている場合は、すべての可能なオプションを確認するには悪夢になるだろう排他的なオプションとグループ。その場合は、オプションをコマンドグループに分割する必要があります。そのためには、こちらの提案に従ってください。Python argparse mutual exclusive group
argparseの後にif? – erikbwork
私は、argparseの素晴らしい点は、あなたのためにエラーメッセージを処理することです。 –
私は相互排他的なグループに 'add_argument_group'を使って通常のグループのオプションを追加することはできますが、これはまったく機能しません(相互に排他的なグループを全く持たないのと同じです)。おそらく、この種のロジックを実装するカスタムアクションを書く方が良いでしょう。それはやりすぎるはずです。 – Bakuriu