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