argparser条件字段取决于选项

时间:2019-03-09 20:17:18

标签: python python-3.x arguments argparse

当前,我正在构建一个CLI工具,我想给它这种形式的表格。

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

我正在做的是我有一个主要的cli模块,它将从我要公开给用户的所有模块中导入所有arguments_parser函数,并将其动态动态添加为{ {1}}

下面是python代码的功能,该功能将解析器添加到主解析器中,该解析器是来自sub parsers类型的对象,可以是根解析器,也可以是子解析器。 (我对每个模块都这样做,因此它们的方法作为CLI公开)。

现在我要在这种特殊情况下要做的是让命令ArgumentParser带有第一个参数PROG,该命令具有两个(可能更多)互斥的参数序列(而不创建新的子解析器),说我有两个函数,SUBPARSERsearch 搜索和列表可能具有通用参数(将向子解析器而不是组),但也有标记和参数专用于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]

请不要介意帮助字符串。

有帮助吗?

0 个答案:

没有答案