Python
的命令行包argparse
内置了-h, --help
命令。但它没有分组,和其它的命令混在一起,并且显示在最前面。我更喜欢把它放在单独的「LOG 和帮助」分组:
import argparse
parser = argparse.ArgumentParser(
usage="示例程序",
add_help=False,
formatter_class=lambda prog: argparse.RawTextHelpFormatter(prog, max_help_position=50))
parser.add_argument("--server", required=True, help="必备参数")
group = parser.add_argument_group("LOG和帮助")
group.add_argument("--log", default="info", help="设置LOG级别")
group.add_argument("-h", "--help", action="help", help="查看帮助信息")
options = parser.parse_args()
注意上面的-h, --help
必须设置为argparse
内置的action="help"
。下面这种写法:
group.add_argument("-h", "--help", action="store_true", help="查看帮助信息")
options = parser.parse_args()
if options.help:
parser.print_help()
sys.exit(0)
这时候直接-h
将提示没有指定--server
,而不是正常地显示帮助信息。
补充:
如果用到子命令, add_help=False 的设置将把子命令的帮助信息也删掉,需要自己手工加入:
# 如果上面设置了设置子parser的帮助信息
if self._subparsers:
for subparser in self._subparsers._group_actions:
for subparse in subparser._name_parser_map.items():
group = subparse[1].add_argument_group("LOG和帮助信息")
group.add_argument("--log", default="info", help="log级别。")
group.add_argument("--log_file", help="log到的文件地址。")
group.add_argument("-h", "--help", action="help", help="查看帮助信息")
Q. E. D.