【问题标题】:Can Python's optparse display the default value of an option?Python 的 optparse 可以显示选项的默认值吗?
【发布时间】:2010-11-18 06:36:40
【问题描述】:

当使用 --help 显示帮助时,有没有办法让 Python 的 optparse 打印选项或标志的默认值?

【问题讨论】:

标签: python optparse


【解决方案1】:

尝试使用%default 字符串占位符:

# This example taken from http://docs.python.org/library/optparse.html#generating-help
parser.add_option("-m", "--mode",
                  default="intermediate",
                  help="interaction mode: novice, intermediate, "
                       "or expert [default: %default]")

【讨论】:

    【解决方案2】:

    如果您想为您指定的所有选项自动添加默认值,您可以执行以下操作:

    for option in parser.option_list:
        if option.default != ("NO", "DEFAULT"):
            option.help += (" " if option.help else "") + "[default: %default]"
    

    【讨论】:

      【解决方案3】:

      如果您需要以编程方式访问默认值,您可以通过解析器的defaults 属性(它是一个字典)访问它们

      【讨论】:

        【解决方案4】:

        您的问题的 cmets 已经表明还有另一种解析参数的方法,称为 argparse。它已在 Python 3.2 中引入。它实际上弃用了optparse,但用法类似。

        argpass 带有不同的格式化类,例如argparse.ArgumentDefaultsHelpFormatter 也会打印默认值,而无需您手动操作帮助字符串。

        ArgumentParser 对象允许自定义帮助格式 指定备用格式类。目前有四个 这样的类:

        类 argparse.RawDescriptionHelpFormatter

        类 argparse.RawTextHelpFormatter

        类 argparse.ArgumentDefaultsHelpFormatter

        类 argparse.MetavarTypeHelpFormatter

        python 文档中的一个示例:

        >>> parser = argparse.ArgumentParser(
        ...     prog='PROG',
        ...     formatter_class=argparse.ArgumentDefaultsHelpFormatter)
        >>> parser.add_argument('--foo', type=int, default=42, help='FOO!')
        >>> parser.add_argument('bar', nargs='*', default=[1, 2, 3], help='BAR!')
        >>> parser.print_help()
        usage: PROG [-h] [--foo FOO] [bar [bar ...]]
        
        positional arguments:
         bar         BAR! (default: [1, 2, 3])
        
        optional arguments:
         -h, --help  show this help message and exit
         --foo FOO   FOO! (default: 42)
        

        argparse formatting classes

        【讨论】:

          【解决方案5】:

          argparse.ArgumentDefaultsHelpFormatter 添加到您的解析器

              import argparse
          
              parser = argparse.ArgumentParser(
              description='Your application description',
              formatter_class=argparse.ArgumentDefaultsHelpFormatter)
          

          来自文档:

          ArgumentDefaultsHelpFormatter 自动添加关于 每个参数帮助消息的默认值: 块引用

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-01
            • 1970-01-01
            • 2019-03-22
            • 1970-01-01
            • 1970-01-01
            • 2011-03-12
            相关资源
            最近更新 更多