2009-08-10 29 views
41

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

+0

看到这个:http://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help – 2014-01-16 09:26:18

+0

如果有人寻求相同的Argparse:[Argparse:包括的方式'--help'中的默认值?](http://stackoverflow.com/a/12151325/562769) – 2014-02-24 07:48:37

回答

54

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

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

7

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

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

The co对你的问题的评论已经表明有另一种方法来解析名为argparse的参数。它已经在Python 3.2中引入。它实际上弃用optparse,但使用类似。

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

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

类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

0

从文档添加argparse.ArgumentDefaultsHelpFormatter到您的解析器

import argparse 

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

ArgumentDefaultsHelpFormatter会自动将有关 默认值,每个参数的帮助信息: Blockquote