43

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

4

5 回答 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]")
于 2009-08-10T12:01:33.253 回答
8

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

for option in parser.option_list:
    if option.default != ("NO", "DEFAULT"):
        option.help += (" " if option.help else "") + "[default: %default]"
于 2012-08-10T17:16:52.270 回答
7

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

于 2009-08-10T12:04:04.510 回答
0

对您问题的评论已经表明还有另一种解析参数的方法,称为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 格式化类

于 2015-11-28T08:07:00.960 回答
0

argparse.ArgumentDefaultsHelpFormatter添加到您的解析器

    import argparse

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

来自文档:

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

于 2017-01-12T15:53:15.827 回答