argparse - 在帮助菜单中, Argparse python 、删除subparser列表

  显示原文与译文双语对照的内容
0 0

我在写一个命令行实用程序使用Argparse和添加了一堆sub_parsers ( 子命令) 。 在帮助菜单中它们出现在了一个叫" 命令",并且获得一个好所有可能的选项列表。 但是此列表出现之前,所有相同的命令显示在组标题在大括号中) 如下所示:

Commands:
    {foo, bar}
    foo          - foo does foo
    bar          - bar does bar

我想移除多余的项出现在大括号。 它只出现在该组即充满sub_parsers 。

我的代码来处理这看起来就像这样: ( 其中解析器是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")

我已经看了那些属性和方法我的命令行动小组和找不到什么东西能为我解决这个( 至少从我能利用) 。 我不确定如果别人有关心这些,我认识到它可能是有点模糊不清。 再一次,所有我想做的就是找到方法移除多余的显示在大括号的命令列表。

时间:原作者:2个回答

0 0

在" {foo ,bar} " 部分是参数'metavar'。 一个metavar就是argparse是指预期参数用法和帮助字符串中的值。 argparse对待子命令具有多个选项如果你像个参数未指定metavar,默认值为大括号中的选择列表( 子命令) 。 让用户知道可能的选项列出了子命令但是由于下方,它是重复的,如果有大量子命令,太过分了

你可以轻松地替换为自己的选择metavar :

subparsers = parser.add_subparsers(title="Commands", metavar="<command>")
原作者:
0 0

上,可以通过编写自己的自定义帮助信息格式器类,基于 argparse.HelpFormatter并将其传递给解析器的接口的构造函数使用 formatter_class参数。

有关详细信息,请查阅 http://docs .python .org/dev/library/argparse .html#formatter类

原作者:
...