为了账号安全,请及时绑定邮箱和手机立即绑定

在组之间使用互斥

在组之间使用互斥

aluckdog 2021-03-25 10:06:58
我试图在不同的组之间建立一个互斥的组:我有-a,-b,-c参数,并且我想与-a和-b在一起,或与-a和-c在一起发生冲突。帮助应该显示类似[-a | ([-b] [-c])]。以下代码似乎没有互斥选项:import argparseparser = argparse.ArgumentParser(description='My desc')main_group = parser.add_mutually_exclusive_group()mysub_group = main_group.add_argument_group()main_group.add_argument("-a", dest='a', action='store_true', default=False, help='a help')mysub_group.add_argument("-b", dest='b', action='store_true',default=False,help='b help')mysub_group.add_argument("-c", dest='c', action='store_true',default=False,help='c help')parser.parse_args()解析不同的组合-全部通过:> python myscript.py -husage: myscript.py [-h] [-a] [-b] [-c]My descoptional arguments:  -h, --help  show this help message and exit  -a          a help> python myscript.py -a -c> python myscript.py -a -b> python myscript.py -b -c我尝试将更mysub_group改为add_mutually_exclusive_group将所有内容互斥:> python myscript.py -husage: myscript.py [-h] [-a | -b | -c]My descoptional arguments:  -h, --help  show this help message and exit  -a          a help  -b          b help  -c          c help如何为[-a | ([-b] [-c])]?
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

因此,这已经被问过很多次了。简单的答案是“使用argparse,您不能这样做”。但是,这是简单的答案。您可以使用子解析器,因此:


import argparse

parser = argparse.ArgumentParser(description='My desc')

sub_parsers = parser.add_subparsers()

parser_a = sub_parsers.add_parser("a", help='a help')

parser_b = sub_parsers.add_parser("b", help='b help')

parser_b.add_argument("-c", dest='c', action='store_true',default=False,help='c help')

parser.parse_args()

然后,您将获得:


$ python parser -h

usage: parser [-h] {a,b} ...


My desc


positional arguments:

  {a,b}

    a         a help

    b         b help


optional arguments:

  -h, --help  show this help message and exit

和:


$ python parser b -h

usage: parser b [-h] [-c]


optional arguments:

  -h, --help  show this help message and exit

  -c          c help

如果您喜欢问题中所述的论据,请看一下docopt,它看起来很可爱,应该按照您想要的去做。


查看完整回答
反对 回复 2021-03-27
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信