我使用argparse
生成CLI并使用add_subparsers
函数。这是--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 ...
我该怎么做?
答案 0 :(得分:1)
尝试将metavar
参数添加到您的subparser定义中,并且不给它任何值:
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