Argparse:在“–help”中包含默认值的方法?
假设我有以下的argparse片段:
diags.cmdln_parser.add_argument( '--scan-time', action = 'store', nargs = '?', type = int, default = 5, help = "Wait SCAN-TIME seconds between status checks.")
目前,–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以类似的方式打印' – 扫描时间'的默认值,或者我应该只是帮助格式化子?
使用argparse.ArgumentDefaultsHelpFormatter
格式化程序 :
parser = argparse.ArgumentParser( # ... other options ... formatter_class=argparse.ArgumentDefaultsHelpFormatter)
引用文档:
另一个可用的格式化类
ArgumentDefaultsHelpFormatter
将添加有关每个参数的默认值的信息。
请注意,这只适用于有帮助文本定义的参数; 没有任何参数的help
价值,有注意添加信息。
扫描时间选项的确切输出为:
--scan-time [SCAN_TIME] Wait SCAN-TIME seconds between status checks. (default: 5)
将'%(default)'
添加到帮助参数来控制显示内容。
parser.add_argument("--type", default="toto", choices=["toto","titi"], help = "type (default: %(default)s)")
Python中没有默认的Optparser。
但是,您可以使用下面的内容 –
# show help as default if len(sys.argv) == 1: os.system("python " + sys.argv[0] + " -h") exit()
这将使用-h
选项运行相同的脚本,然后退出。
请注意 – 您需要导入os + sys模块才能使用此选项。