位置参数的格式 argparse 帮助
Format argparse help for positional arguments
默认 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
...
子类化 argparse.RawDescriptionHelpFormatter
工作量太大,所以我使用这个 hack 来提取命令列表并构建我自己的消息。
def print_help(parser):
"""print help for humans"""
print(parser.description)
print('\ncommands:\n')
#
# 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))
默认 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
...
子类化 argparse.RawDescriptionHelpFormatter
工作量太大,所以我使用这个 hack 来提取命令列表并构建我自己的消息。
def print_help(parser):
"""print help for humans"""
print(parser.description)
print('\ncommands:\n')
#
# 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))