使用python的optparse时在帮助消息中显示换行符

时间:2011-05-11 08:12:02

标签: python optparse

我正在使用optparse模块进行选项/参数解析。出于向后兼容性原因,我无法使用argparse模块。如何格式化我的epilog消息以保留换行符?

在下面的示例中,我希望将epilog打印为格式化。

    epi = \
"""
Examples usages:
  Do something
  %prog -a -b foo
  Do something else
  %prog -d -f -h bar
"""
    parser = optparse.OptionParser(epilog=epi)

3 个答案:

答案 0 :(得分:8)

见第一个答案:

python optparse, how to include additional info in usage output?

基本答案是继承OptionParser

class MyParser(optparse.OptionParser):
    def format_epilog(self, formatter):
        return self.epilog

答案 1 :(得分:1)

你可以装饰optparse.HelpFormatter.format_description函数:

from optparse import HelpFormatter as fmt
def decorate(fn):
    def wrapped(self=None, desc=""):
        return '\n'.join( [ fn(self, s).rstrip() for s in desc.split('\n') ] )
    return wrapped
fmt.format_description = decorate(fmt.format_description)

因此,您可以获得执行此类操作的帮助说明:

my_desc = """This is some text
that wraps to some more stuff.\n
\n
And this is a new paragraph.\n
\n
This line comes before\n
this line but not in a different paragraph."""

适合我。 :)

答案 2 :(得分:0)

对于那些使用user227667的答案但想要替换epilog中的%prog的人,您可以使用:

class MyParser(optparse.OptionParser):
    def format_epilog(self, formatter):
        return self.expand_prog_name(self.epilog)

但一般情况下,如果可能,请不要使用optparse。