<pre><code>parser = optparse.OptionParser(epilog="otherstuff")
</code></pre>
<p>默认的<code>format_epilog</code>将删除换行符(使用textwrap),因此您需要这样覆盖解析器中的<code>format_epilog</code>。</p>
<pre><code>def main():
class MyParser(optparse.OptionParser):
def format_epilog(self, formatter):
return self.epilog
parser =MyParser(epilog=
"""Examples:
check_dell -c all
check_dell -c fans memory voltage
check_dell -s
""")
...
</code></pre>
<p>这里有更多细节。<br/>
如果您在类<code>optparse.py</code>中查找<code>OptionParser</code>,则有一个名为<code>format_epilog</code>的方法,该方法由<code>format_help</code>调用</p>
<p>这是optparse.py中的片段</p>
<pre><code>def format_epilog(self, formatter):
return formatter.format_epilog(self.epilog)
def format_help(self, formatter=None):
if formatter is None:
formatter = self.formatter
result = []
if self.usage:
result.append(self.get_usage() + "\n")
if self.description:
result.append(self.format_description(formatter) + "\n")
result.append(self.format_option_help(formatter))
result.append(self.format_epilog(formatter))
return "".join(result)
</code></pre>
<p><code>formatter.format_epilog</code>的默认行为是使用<code>textwrap.fill</code>,其中包括从epilog中除去新行。因为我们希望保留新行,所以我们将<code>OptionParser</code>划分为子类,并改变<code>format_epilog</code>的行为</p>