使用 python 的 optparse 时在帮助消息中显示换行符

发布于 2024-11-06 13:07:19 字数 300 浏览 4 评论 0原文

我正在使用 optparse 模块进行选项/参数解析。出于向后兼容性的原因,我无法使用 argparse 模块。如何格式化我的 Epilog 消息以便保留换行符?

在下面的示例中,我希望按格式打印尾声。

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

I'm using the optparse module for option/argument parsing. For backwards compatibility reasons, I can't use the argparse module. How can I format my epilog message so that newlines are preserved?

In the below example, I'd like the epilog to be printed as formatted.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痴情 2024-11-13 13:07:19

请参阅第一个答案:

python optparse,如何包含使用输出中的附加信息?

基本答案是子类化 OptionParser

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

See the first answer at:

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

The basic answer is to subclass the OptionParser

class MyParser(optparse.OptionParser):
    def format_epilog(self, formatter):
        return self.epilog
魄砕の薆 2024-11-13 13:07:19

您可以装饰 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."""

对我有用。 :)

You could decorate the optparse.HelpFormatter.format_description function:

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)

Thus, you can have a help description that does things like this:

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

Works for me. :)

浅听莫相离 2024-11-13 13:07:19

对于那些使用 user227667 的答案但想要替换 Epilog 中的 %prog 的人,您可以使用:

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

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

For those of you who are using user227667's answer but want to replace %prog in the epilog, you may use:

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

But in general, if possible, do not use optparse.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文