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

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

尝试使用%defaultstring占位符:

 # 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]") 

如果你需要编程访问默认值,你可以通过parsing器的defaults属性(这是一个字典)

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

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

对你的问题的评论已经表明还有另一种parsing称为argparse的参数的方法。 它已经在Python 3.2中引入了。 它实际上弃用了optparse但是被类似地使用。

argpass带有不同的格式化类,例如argparse.ArgumentDefaultsHelpFormatter也将打印默认值,而不必手动操作帮助string。

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

将argparse.ArgumentDefaultsHelpFormatter添加到您的分析器

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

从文档:

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