12

パーサーを次のようにしたいcmd [-a xxx -b xxx] -c xxx -d xxx

使われるとき-aは、私も使われたい-b。同様に、 を使用する場合-bは、 も使用する-a必要があります。どちらも未使用-aでOKです。-b

それ、どうやったら出来るの?カスタム アクションを試してみましたが、うまくいきません。

4

2 に答える 2

13

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")
于 2013-06-06T16:56:33.743 に答える