6

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

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

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

3 回答 3

8

请参阅第一个答案:

python optparse,如何在使用输出中包含附加信息?

基本答案是子类化 OptionParser

class MyParser(optparse.OptionParser):
    def format_epilog(self, formatter):
        return self.epilog
于 2011-05-11T08:23:00.437 回答
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."""

为我工作。:)

于 2014-04-01T14:44:19.220 回答
1

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

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

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

于 2016-09-13T00:14:20.800 回答