Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python时在帮助消息中显示换行符';s光路_Python_Optparse - Fatal编程技术网

使用python时在帮助消息中显示换行符';s光路

使用python时在帮助消息中显示换行符';s光路,python,optparse,Python,Optparse,我正在使用optpasse模块进行选项/参数解析。由于向后兼容的原因,我不能使用argparse模块。如何格式化我的epilog消息以便保留换行符 在下面的示例中,我希望将尾声打印为格式化 epi = \ """ Examples usages: Do something %prog -a -b foo Do something else %prog -d -f -h bar """ parser = optparse.OptionParser(epilog=ep

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

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

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

见第一个答案:

基本答案是将OptionParser子类化

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

您可以修饰optpass.HelpFormatter.format_描述函数:

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

为我工作。:)

对于正在使用user227667答案但希望在结束语中替换
%prog
的用户,您可以使用:

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

但一般来说,如果可能的话,不要使用optpass。

谢谢。这正是我想要的。您如何修改与选项关联的帮助消息?那么这个答案就行不通了,因为它只会更改epilog的格式。还有一个format_help()方法也可以被覆盖。这只是一个旁注。为什么不能使用argparse?Jakob,当我使用Python2.6时,有没有一种方法可以使用argparse,并希望与可能使用Python2.7+或可能不使用Python2.7+的人分享?只需将其包括在本地^^