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

