在Python的optparse中显示帮助信息中的换行符

6 投票
3 回答
5179 浏览
提问于 2025-04-16 17:25

我正在使用optparse模块来处理选项和参数。因为要兼容旧版本,我不能使用argparse模块。我该如何格式化我的结尾信息,以便保留换行符呢?

在下面的例子中,我希望结尾信息能够按照我想要的格式打印出来。

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

3 个回答

1

如果你正在使用用户227667的回答,但想在结尾部分替换掉%prog,你可以使用以下方法:

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

不过一般来说,如果可以的话,尽量不要使用optparse这个工具。

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

对我来说很好用。 :)

8

请查看第一个答案:

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

简单来说,就是要创建一个OptionParser的子类。

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

撰写回答