Python 的 argparse 自定义 help 命令分组

作者: , 共 931 字 , 共阅读 0

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,而不是正常地显示帮助信息。

Q. E. D.

类似文章:
编程 » C++, boost, 命令行
我们用boost的命令行库program_options解析命令行,在解释布尔命令行时使用下面代码:
相似度: 0.079
编程 » Python
Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止。下面命令可以查看当前的搜索路径:
IT » Python, Ubuntu
主要是update-alternatives命令的使用。
Python 提供很多语法糖,用起来非常方便。@dataclass 就是其中之一。
编程 » NaN, Python, Javascript, JSON
一般而言,在 Python 里:
编程 » Python, 并行计算
核心就是threading.Thread
编程 » Python
imp.load_source在动态载入 python 模块时非常有用,但需要注意其特性。
Pyhon 的抽象基类( abstruct base class )库abc定义了类似于 C++的纯虚函数的功能:
在 Python 中操作文件或字符串时,有时候会碰到 UnicodeDecodeError 异常:
编程 » Excel, VBA
效果图:
爬升约 800 米(下降约 500 米,起点终点海拔不一样),路程约 12 公里;路好走。
IT »
zhiqiang.org之前用Google Apps提供邮箱服务,后来不知怎么就被关了。昨天弄了下,把它挪到了腾讯企业邮箱,用的免费的基准版服务。今天已经生效了。