假设:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo')
pa.add_argument('--bar')
print pa.parse_args('--foo 1'.split())
我该怎么做
--foo x
,--bar y
和--foo x --bar y
没问题--foo x
或--bar y
没问题,--foo x --bar y
不是答案 0 :(得分:229)
我认为您正在搜索mutual exclusion之类的内容(至少在问题的第二部分)。
这样,只接受foo或bar,而不是两者。
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--foo',action=.....)
group.add_argument('--bar',action=.....)
args = parser.parse_args()
BTW,刚发现another question指的是同一类问题。
希望这有帮助
答案 1 :(得分:27)
如果您需要模块未提供的某些检查,您可以随时手动执行:
pa = argparse.ArgumentParser()
...
args = pa.parse_args()
if args.foo is None and args.bar is None:
pa.error("at least one of --foo and --bar required")