Python 删除长子命令帮助输出?
我正在使用生成CLI并使用该函数。这是个例外,Python 删除长子命令帮助输出?,python,python-2.7,argparse,Python,Python 2.7,Argparse,我正在使用生成CLI并使用该函数。这是个例外,--help的输出非常难看。它列出了整个语法中的所有命令。例如: usage: redid [-h] [--config CONFIG] [--verbose] [--show-curl] [--save [SAVE]] {setup,show-config,check-auth,version,get-profile,put-profile,delete-profile,get-profile-signature,lis
--help
的输出非常难看。它列出了整个语法中的所有命令。例如:
usage: redid [-h] [--config CONFIG] [--verbose] [--show-curl] [--save [SAVE]]
{setup,show-config,check-auth,version,get-profile,put-profile,delete-profile,get-profile-signature,list-profiles,list-resources,ls-resources,get-resource-record,delete-resource,get-resource,upload-resource,get-resource-url}
...
我更喜欢更传统、更干净的输出,类似于:
usage: redid [OPTIONS...] Command ...
如何执行此操作?尝试将
metavar
参数添加到子parser定义中,并且不给它任何值:
parser.add_subparsers(title="the_commands", metavar="")
:
参数说明:
- metavar—在帮助中显示可用子命令的字符串;默认情况下,它是None,并以{cmd1,cmd2,…}的形式显示子命令
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('--foo', action='store_true', help='foo help')
subparsers = parser.add_subparsers(help="sub-command help", metavar="sub command")
parser_a = subparsers.add_parser('a', help='a help')
parser_a.add_argument('bar', type=int, help='bar help')
parser_b = subparsers.add_parser('b', help='b help')
parser_b.add_argument('--baz', choices='XYZ', help='baz help')
>>> parser.print_help()
usage: PROG [-h] [--foo] sub command ...
positional arguments:
sub command sub-command help
a a help
b b help
optional arguments:
-h, --help show this help message and exit
--foo foo help
这就删除了字符串,但是现在在一般语法中它根本没有提到sub命令。子帮助也有恼人的文本,但至少它比长字符串好。这是我能够解决类似问题的唯一方法。我为此回复了Bakuriu。它没有按预期工作。特别是在获取子命令帮助时,它只是将子命令帮助附加到此字符串,从而产生令人困惑的输出。@edA-qamart-ora-y我添加了一个示例,我不确定它是否修复了它,但请看一看。您可以将参数传递给构造函数…@Bakuriu,不,这不符合预期。它将长字符串保留在子命令帮助中。此外,这还破坏了sub命令的
--help
功能(它只是将子命令help附加到此用法字符串中)。。。如果您阅读有关的文档,您会发现add\u parser
接受的参数与完全相同。问题不在于sub命令帮助,而是与基本帮助的组合形式。事实证明,我可以指定一个prog
选项来add_subparser
哪种方法可以解决这个问题。