python - Argparse python,在帮助菜单中删除子解析器列表

标签 python argparse

我正在使用 Argparse 编写一个命令行实用程序,并添加了一堆 sub_parsers(子命令)。在帮助菜单中,它们出现在名为“命令”的组下,我得到了所有可能选项的不错列表。然而,在此列表出现之前,所有相同的命令都会出现在大括号中的组标题下,如下所示:

Commands:
    {foo, bar}

    foo          - foo does foo
    bar          - bar does bar

我想删除出现在大括号中的多余条目。它只出现在这个被 sub_parsers 填充的组中。

我处理这个问题的代码如下所示:(其中 parser 是 ArgumentParser() 实例)

subparsers = parser.add_subparsers(title="Commands")

foo = subparsers.add_parser("foo", help="- foo does foo")
bar = subparsers.add_parser("bar", help="- bar does bar")

我查看了我的命令操作组的属性和方法,似乎找不到任何可以为我解决这个问题的方法(至少从我能理解的情况来看)。我不确定是否有其他人处理过这个问题,我意识到这可能有点晦涩难懂。再说一次,我要做的就是找到删除出现在大括号中的多余命令列表的方法。

最佳答案

“{foo,bar}”部分是参数“metavar”。元变量是 argparse 引用用法和帮助字符串中的预期参数值的方式。 argparse 将子命令视为具有多个选项的参数,因此如果您不指定元变量,则默认值是花括号中的选项列表(子命令)。它让用户知道子命令的可能选项,但由于它们就在下面列出,它是多余的,如果你有很多子命令,那就很难看。

您可以轻松地用自己选择的元变量替换:

subparsers = parser.add_subparsers(title="Commands", metavar="<command>")

关于python - Argparse python,在帮助菜单中删除子解析器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070268/

相关文章:

python结合map()的两种逻辑

python - 在 Python 中,如何解析表示一组关键字参数的字符串,使得顺序无关紧要

python - 将使用 argparse 的 python 脚本/模块导入到另一个 python 脚本中

python - argparse:当存在子解析器时如何分隔未知(和可选)args。(子解析器也是可选的)

python - 如何让解析器打印帮助消息而不是错误并退出

python - resize 和 reshape 有什么区别

python - 将多个时间序列数据组合到一个 2d numpy 数组

python - 一个破折号中包含多个可选标志的 argparse

python - matplotlib 中 3D 线框可视化的问题

Python argparse 忽略连接的参数?