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模块才能使用此选项。