目前我正在构建一个CLI工具,我想给它一个类似的表单。你知道吗
usage: PROG SUBPARSER [-h]
(-l {optionA,optionB,optionC} | -s TERM [-a, [-b, [-c]]])
我正在做的是我有一个主cli
模块,它将从我想要向用户公开的所有模块中导入所有参数解析器函数,并将它们动态地添加到主解析器中作为sub parsers
下面的python代码是将解析器添加到主解析器的函数的一部分,它是来自类型ArgumentParser
的对象,可以是根解析器,也可以是子解析器。(我对每个模块都这样做,因此它们的方法以CLI的形式公开)。你知道吗
在这个特殊的例子中,我要做的是有一个命令,比如说PROG
,第一个参数SUBPARSER
,它有两个(可能更多)互斥的参数序列(没有创建新的子解析器),比如说我有两个函数,search
和list
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 argument_parser(parser):
"""Argument parser for SUBPARSER subgroup"""
group = parser.add_mutually_exclusive_group(required=False)
group.add_argument('-l','--list',
choices=status_criterias,
help='List the content specified',
default='all'
)
group.add_argument('-s','--search',
help='Search by title from all the content')
请不要介意帮助字符串。你知道吗
有什么帮助吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐