问题:需要使用argparse的两个参数之一
鉴于:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo')
pa.add_argument('--bar')
print pa.parse_args('--foo 1'.split())
我如何
- 将“ foo,bar”中的至少一项设为强制性:
--foo x
,--bar y
并且--foo x --bar y
可以 - 使“ foo,bar”中的一项至多为强制性的:
--foo x
或者--bar y
很好,--foo x --bar y
不是
回答 0
我认为您正在寻找类似互斥的内容(至少对于问题的第二部分而言)。
这样,仅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()
顺便说一句,只是发现了另一个问题,指的是同样的问题。
希望这可以帮助
回答 1
如果您需要模块未提供的某些检查,则可以始终手动进行:
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")