如何不使用自定义格式化器优化argparse子命令的帮助信息显示
解决方案
直接修改代码如下即可实现需求,无需自定义格式化器:
import argparse import sys parser = argparse.ArgumentParser() # 配置子命令分组 subparsers = parser.add_subparsers( title="subcommands", # 指定子命令分组名称 help=argparse.SUPPRESS, # 隐藏子命令在默认位置参数组的显示 ) # 子命令的说明要写到help参数中,才能在父命令的子命令列表里展示 command1 = subparsers.add_parser("foo", help="Run foo subcommand") command2 = subparsers.add_parser("bar", help="Run bar subcommand") # 调整分组顺序,让subcommands显示在optional arguments前面 parser._action_groups.reverse() opts = parser.parse_args(sys.argv[1:])
关键修改说明
- 给
add_subparsers传入title参数,argparse会自动把子命令归到对应名称的独立分组,不会再放到默认的位置参数组 - 子命令的
add_parser方法中,help参数定义的是父命令帮助列表里该子命令的说明,description参数定义的是执行该子命令加-h时展示的开头描述,两者作用不同不要混淆 - 调用
parser._action_groups.reverse()调整分组显示顺序,和你期望的输出格式完全匹配
内容的提问来源于stack exchange,提问作者Zachary Turner
相关产品推荐
相关产品推荐

