假设我有以下 argparse 片段:
diags.cmdln_parser.add_argument( '--scan-time', action = 'store', nargs = '?', type = int, default = 5, help = "Wait SCAN-TIME seconds between status checks.")
目前,--help返回:
--help
usage: connection_check.py [-h] [--version] [--scan-time [SCAN_TIME]] Test the reliability/uptime of a connection. optional arguments: -h, --help show this help message and exit --version show program's version number and exit --scan-time [SCAN_TIME] Wait SCAN-TIME seconds between status checks.
我更喜欢这样的东西:
--scan-time [SCAN_TIME] Wait SCAN-TIME seconds between status checks. (Default = 5)
查看帮助格式化程序代码会发现有限的选项。有没有一种聪明的方法可以以类似argparse的方式打印默认值,或者我应该只对格式化程序进行子类化?--scan- time``help
argparse
--scan- time``help
使用argparse.ArgumentDefaultsHelpFormatter格式化程序:
argparse.ArgumentDefaultsHelpFormatter
parser = argparse.ArgumentParser( # ... other options ... formatter_class=argparse.ArgumentDefaultsHelpFormatter)
引用文档:
另一个可用的格式化程序类ArgumentDefaultsHelpFormatter,将添加有关每个参数的默认值的信息。
ArgumentDefaultsHelpFormatter
请注意, 这只适用于定义了帮助文本的参数 ;如果参数没有help值,则没有帮助消息将有关默认值的信息添加 到.
help
然后,您的扫描时间选项的确切输出变为:
--scan-time [SCAN_TIME] Wait SCAN-TIME seconds between status checks. (default: 5)