需要使用argparse的两个参数之一 [英] Require either of two arguments using argparse

查看:127
本文介绍了需要使用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没问题
  • make at least one of "foo, bar" mandatory: --foo x, --bar y and --foo x --bar y are fine
  • make at most one of "foo, bar" mandatory: --foo x or --bar y are fine, --foo x --bar y is not

推荐答案

我认为您正在搜索类似互斥(至少针对您问题的第二部分).

I think you are searching for something like mutual exclusion (at least for the second part of your question).

这样,仅foo或bar将被接受,而不是两者都被接受.

This way, only foo or bar will be accepted, not both.

    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, just found another question referring to the same kind of issue.

希望这对您有帮助

这篇关于需要使用argparse的两个参数之一的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆