使用Python的optparse时,在帮助信息中显示换行符

6
我正在使用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)

只是顺便提一下,为什么你不能使用 argparse?它要好得多。 - Jakob Bowyer
1
Jakob,我可以在使用Python 2.6时使用argparse,并与可能使用Python 2.7+的人分享吗? - DannyTree
请将此链接的内容 http://pypi.python.org/pypi/argparse/1.2.1 下载到本地。 - Jakob Bowyer
3个回答

8

你如何修改与选项相关联的帮助消息?那么这个答案是不起作用的,因为它只改变了 epilog 的格式。 - HelloGoodbye
还有一个可以被覆盖的 format_help() 方法。 - user227667

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."""

对我来说可行。 :)


1

如果你使用了user227667的答案,但是想要替换epilog中的%prog,可以使用以下代码:

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

但总的来说,如果可能的话,请不要使用optparse。


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