默认argparse
帮助输出很难看:
usage: gl.EXE [-h] [--version]
{track,untrack,status,diff,commit,branch,tag,checkout,merge,resolve,fuse,remote,publish,switch,init,history}
...
Gitless - a version control system built on top of Git - http://gitless.com
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
subcommands:
{track,untrack,status,diff,commit,branch,tag,checkout,merge,resolve,fuse,remote,publish,switch,init,history}
track start tracking changes to files
untrack stop tracking changes to files
status show status of the repo
...
如何将输出格式化为完全如下例所示。保留命令的顺序
Gitless - a version control system built on top of Git - http://gitless.com
commands:
track start tracking changes to files
untrack stop tracking changes to files
status show status of the repo
...
答案 0 :(得分:1)
子类化argparse.RawDescriptionHelpFormatter
太多了,所以我已经使用这个hack来提取命令列表并构建我自己的消息。
def print_help(parser):
"""print help for humans"""
print(parser.description)
print('\ncommands:\n')
# https://stackoverflow.com/questions/20094215/argparse-subparser-monolithic-help-output
# retrieve subparsers from parser
subparsers_actions = [
action for action in parser._actions
if isinstance(action, argparse._SubParsersAction)]
# there will probably only be one subparser_action,
# but better save than sorry
for subparsers_action in subparsers_actions:
# get all subparsers and print help
for choice in subparsers_action._choices_actions:
print(' {:<19} {}'.format(choice.dest, choice.help))