6

オプション/引数の解析にoptparseモジュールを使用しています。下位互換性の理由から、argparseモジュールを使用できません。改行が保持されるようにエピローグメッセージをフォーマットするにはどうすればよいですか?

以下の例では、エピローグをフォーマット済みとして印刷したいと思います。

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

3 に答える 3

8

次の場所で最初の回答を参照してください。

python optparse、使用法の出力に追加情報を含める方法は?

基本的な答えは、OptionParserをサブクラス化することです

class MyParser(optparse.OptionParser):
    def format_epilog(self, formatter):
        return self.epilog
于 2011-05-11T08:23:00.437 に答える
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."""

私のために働きます。:)

于 2014-04-01T14:44:19.220 に答える
1

user227667の回答を使用しているが%prog、エピローグで置き換えたい場合は、次を使用できます。

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

ただし、一般的に、可能であれば、optparseを使用しないでください。

于 2016-09-13T00:14:20.800 に答える