Python的optparse能显示一个选项的默认值吗?

43

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


请参考这个 Stack Overflow 链接:https://dev59.com/IGct5IYBdhLWcg3wXsMy - Mingjiang Shi
如果有人在Argparse中寻找相同的内容:Argparse:如何在“--help”中包含默认值? - Martin Thoma
5个回答

55
尝试使用%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]")

8

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

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

7

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


0

你的问题已经有评论表明了另一种解析参数的方法,叫做argparse。它在Python 3.2中被引入。实际上,它已经取代了optparse,但使用方式类似。

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

ArgumentParser对象允许通过指定替代格式化类来自定义帮助格式。目前有四个这样的类:

class argparse.RawDescriptionHelpFormatter

class argparse.RawTextHelpFormatter

class argparse.ArgumentDefaultsHelpFormatter

class 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 格式化类


0

在你的解析器中添加argparse.ArgumentDefaultsHelpFormatter

    import argparse

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

来自文档:

ArgumentDefaultsHelpFormatter 会自动将默认值信息添加到每个参数帮助消息中: Blockquote


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接