では実際にはできませんでしたが、 を実行argparse
した後でargparse
実行できます。
次に例を示します。
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
andを使用してメソッドを呼び出すことができます。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の提案に従う必要があります。