我正在用optparse模块制作一个shell脚本,只是为了好玩,所以我想打印一个漂亮的ASCII绘图来代替描述。
结果发现这个代码:

parser = optparse.OptionParser(
    prog='./spill.py',
    description=u'''
  /     \
  vvvvvvv  /|__/|
      I   /O,O   |
      I /_____   |      /|/|
     J|/^ ^ ^ \  |    /00  |    _//|
      |^ ^ ^ ^ |W|   |/^^\ |   /oo |
       \m___m__|_|    \m_m_|   \mm_|
''',
    epilog='''
        Las cucarachas lograron con exito su plan, echando a los pestilentes sangre caliente de sus cajas de cemento.
Ahora el hombre es una especie errante en el espacio, un vagabundo errante en las estrellas.''')

呈现如下:
$ ./bin/spill.py -h
Usage: ./spill.py [options]

   /     \                                        vvvvvvv  /|__/|
I   /O,O   |                                   I /_____   |      /|/|
J|/^ ^ ^ \  |    /00  |    _//|                 |^ ^ ^ ^ |W|   |/^^\ |   /oo |
\m___m__|_|    \m_m_|   \mm_|

Options:
  -h, --help            show this help message and exit
#.... bla bla bla, etc

我尝试过各种斜线、换行和ESPACE组合,但都没有成功。
你能帮我正确地展示托托罗吗?

最佳答案

默认格式化程序调用此方法:

 def format_description(self, description):
    if description:
        return self._format_text(description) + "\n"
    else:
        return ""

如果子类IndentedHelpFormatter,则可以删除导致问题的IndentedHelpFormatter调用:
import optparse

class PlainHelpFormatter(optparse.IndentedHelpFormatter):
    def format_description(self, description):
        if description:
            return description + "\n"
        else:
            return ""

parser = optparse.OptionParser(
    prog='./spill.py',
    formatter=PlainHelpFormatter(),
    description=u'''
  /     \
  vvvvvvv  /|__/|
      I   /O,O   |
      I /_____   |      /|/|
     J|/^ ^ ^ \  |    /00  |    _//|
      |^ ^ ^ ^ |W|   |/^^\ |   /oo |
       \m___m__|_|    \m_m_|   \mm_|
''',
    epilog='''
        Las cucarachas lograron con exito su plan, echando a los pestilentes sangre caliente de sus cajas de cemento.
Ahora el hombre es una especie errante en el espacio, un vagabundo errante en las estrellas.''')
(opt,args) = parser.parse_args()

关于python - optparse描述中的ASCII艺术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3543386/

10-12 21:58