パーサーを次のようにしたいcmd [-a xxx -b xxx] -c xxx -d xxx
使われるとき-a
は、私も使われたい-b
。同様に、 を使用する場合-b
は、 も使用する-a
必要があります。どちらも未使用-a
でOKです。-b
それ、どうやったら出来るの?カスタム アクションを試してみましたが、うまくいきません。
Argparse は、このタイプの使用をネイティブにはサポートしていません。
最も効果的なのは、解析後にこれらのタイプの条件が満たされているかどうかを確認することです。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-b')
parser.add_argument('-c')
args = parser.parse_args()
required_together = ('b','c')
# args.b will be None if b is not provided
if not all([getattr(args,x) for x in required_together]):
raise RuntimeError("Cannot supply -c without -b")