Python argparse 列出已定义解析器的所有可能命令

Posted

技术标签:

【中文标题】Python argparse 列出已定义解析器的所有可能命令【英文标题】:Python argparse list all possible commands for a defined parser 【发布时间】:2016-04-10 17:26:31 【问题描述】:

有没有办法列出或生成可以为使用 argparse 定义的解析器执行的有效命令的所有可能组合? 如果使用 argparse 无法实现,有没有人知道任何其他具有此功能的解析器?

例如如果我定义了解析器:

parser = argparse.ArgumentParser(prog='myProg', usage='%(prog)s [options]')
parser.add_argument('--foo1', help='foo help')
parser.add_argument('--foo2', help='foo help')

是否有一个命令/包可以使用这个解析器并生成所有可能的命令组合:

myProg --foo1 test --foo2 test
myProg --foo1 test
myProg --foo2 test

【问题讨论】:

您正在寻找的具体示例是什么? 你能举个例子吗? 【参考方案1】:

有了你的parser,我明白了:

In [34]: parser.print_usage()
usage: myProg [options]

那是因为您指定了:usage='%(prog)s [options]'。删除给我:

In [38]: parser.print_usage()
usage: myProg [-h] [--foo1 FOO1] [--foo2 FOO2]

根据该行中的信息,我可以列出可能的输入

myProg -h
myProg --foo1 FOO1
myProg --foo2 FOO2
etc

该用法行是根据parser 中的信息创建的。所以理论上可以编写一个函数来获取相同的信息并像我一样生成行。但是不,argparse 中没有任何此类功能。据我所知,Python 标准的任何解析器包中都没有。

为什么需要这个显示器?

【讨论】:

感谢您的回复,我只是需要它来查看所有可能命令的所有输出,我想也许有一个内置方法可以让您列出所有命令。但你是对的,我可以很容易地创建一个自己做的函数:)。【参考方案2】:
parser.print_help()

python args parse 显示可用命令

python 解析参数手册页

自定义 arg 解析帮助显示选项

parser.add_argument('-h', '--help', action='store_true')

if arguments.help is True:
    print(parser.print_help())
    sys.exit()

【讨论】:

以上是关于Python argparse 列出已定义解析器的所有可能命令的主要内容,如果未能解决你的问题,请参考以下文章

带有多级解析器/子解析器的 Argparse 可选参数

python ArgParse 自定义操作与使用 metavar 的键值选项导致 -h 输出中的重复

Argparse:“可选参数”下列出的必需参数?

python命令行参数模块argparse

python内置库--argparse

python argparse subparser 为变量赋值