2011-05-11 70 views
6

我正在使用optparse模塊進行選項/參數分析。出於向後兼容性的原因,我無法使用argparse模塊。我如何格式化我的epilog消息,以便保留換行符?使用python的optparse時在幫助消息中顯示換行符

在下面的示例中,我希望將epilog打印爲格式。

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

正如旁註。爲什麼你不能使用argparse?它遠遠優於 – 2011-05-11 08:32:58

+1

Jakob,有沒有一種方法可以在我使用python 2.6時使用argparse,並且希望與可能使用或不使用Python 2.7+的人共享它? – DannyTree 2011-05-11 08:55:50

+0

http://pypi.python.org/pypi/argparse/1.2.1只需在本地加入^^ – 2011-05-11 09:08:52

回答

8

見第一個答案在:

python optparse, how to include additional info in usage output?

最基本的答案是繼承OptionParser

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

謝謝。這正是我所期待的。 – DannyTree 2011-05-11 08:27:54

+0

您怎樣才能修改與選項相關的幫助信息?然後這個答案不起作用,因爲它只會改變epilog的格式。 – HelloGoodbye 2014-01-29 14:27:47

+0

還有一個format_help()方法也可以被覆蓋。 – 2014-01-30 19:09:21

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

爲我工作。 :)

0

對於那些你誰使用user227667的答案,但希望在結語更換%prog,你可以使用:

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

但在一般情況下,如果可能的話,請不要使用optparse。

相關問題