Argparse:在“ --help”中包括默认值的方法吗?

发布于 2021-01-29 17:57:16

假设我有以下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--scan- time类似的方式打印默认值,还是我应该只是help格式化程序的子类?

关注者
0
被浏览
45
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看