我正在使用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)
答案 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。