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