问题:需要使用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")
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。