Python argparser条件字段取决于选项

Python argparser条件字段取决于选项,python,python-3.x,arguments,argparse,Python,Python 3.x,Arguments,Argparse,目前,我正在构建一个CLI工具,我想给它一个与此类似的表单 usage: PROG SUBPARSER [-h] (-l {optionA,optionB,optionC} | -s TERM [-a, [-b, [-c]]]) 我正在做的是我有一个maincli模块,它将从我想要向用户公开的所有模块中导入所有参数解析器函数,并将它们作为子解析器动态地添加到主解析器中 下面的python代码是一个将解析器添加到主解析器的函数,作为解析器,它是类型Argum

目前,我正在构建一个CLI工具,我想给它一个与此类似的表单

usage: PROG SUBPARSER [-h] 
                 (-l {optionA,optionB,optionC} | -s TERM [-a, [-b, [-c]]])

我正在做的是我有一个main
cli
模块,它将从我想要向用户公开的所有模块中导入所有参数解析器函数,并将它们作为
子解析器动态地添加到主解析器中

下面的python代码是一个将解析器添加到主解析器的函数,作为解析器,它是类型
ArgumentParser
中的一个对象,可以是根解析器,也可以是子解析器。(我对每个模块都这样做,所以它们的方法都以CLI的形式公开)

在这个特殊的例子中,我要做的是使用一个命令,比如说
PROG
,第一个参数
SUBPARSER
,它有两个(可能更多)互斥的参数序列(不创建新的子解析器),说我有两个函数,
search
list
so search和list可以有公共参数(这将分配给子解析器而不是组),但也有标志和参数专门用于
--list
--search
,以便生成如下命令

PROG SUBARSER --list optionA -a -o -b
PROG SUBARSER --list optionA -a -o
PROG SUBARSER --list optionA -a -b
PROG SUBARSER --list optionA -a
PROG SUBARSER --list optionA

PROG SUBARSER --search TERM -a -k
PROG SUBARSER --search TERM -c
PROG SUBARSER --search TERM 
我尝试向解析器添加嵌套组,其中包含互斥组和常规组,但它不允许(或者至少我还没有找到方法)包含具有多个参数的互斥组,而不仅仅是一个标志或属性

这就是我到目前为止所拥有的,它不会崩溃,而且实际上运行起来很有用

usage: PROG SUBPARSER [-h]
            [-l {all,draft,staged,publish,build,not-build} | -s SEARCH]

def参数_解析器(解析器):
“”“子parser子组的参数分析器”“”
组=解析器。添加互斥组(必需=False)
添加参数('-l','-list',
选择=状态\标准,
help='List指定的内容',
默认class='all'
)
group.add_参数('-s','-search',
help='从所有内容中按标题搜索')
请不要介意帮助字符串


有什么帮助吗

互斥组是一个非常简单的测试-一个平面
xor
。没有子组或
任何/和
逻辑<代码>参数组
是一种不相关的帮助分组机制。Fancier测试最好在解析后进行。好的,但是有没有办法添加两个相互排斥的组?你是说
xor(任意(a,b,c),任意(d,e,f))
?不,是的,我正在使用xorg部分,但最终它应该是类似于
和(any(g,hi),xor(any(a,b,c),any(d,e,f))