Python OPTPASE描述中的ASCII艺术

Python OPTPASE描述中的ASCII艺术,python,optparse,ascii-art,Python,Optparse,Ascii Art,我正在用optparse模块制作一个shell脚本,jut for fun,所以我想打印一个漂亮的ascii图形来代替描述 结果表明,该代码: parser = optparse.OptionParser( prog='./spill.py', description=u''' / \ vvvvvvv /|__/| I

我正在用optparse模块制作一个shell脚本,jut for fun,所以我想打印一个漂亮的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组合,但都没有成功


朋友pytonista,你能帮我正确显示Totoro吗?

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

 def format_description(self, description):
    if description:
        return self._format_text(description) + "\n"
    else:
        return ""
如果子类化了
IndentedHelpFormatter
,则可以删除导致问题的
self.\u format\u text
调用:

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()

如果所有其他操作都失败,请使用代码生成

最简单的方法是创建一个包含所需输出的文本文件,并对其进行base64编码,然后将其嵌入一个公开全局变量的.py文件中


现在,您需要包含生成的.py、base64解码和打印全局变量,这一切都可以正常工作。

对于线程死灵术很抱歉,但是对于升级到2.7的用户,您现在可以通过简单的传递,轻松地在描述中显示ascII艺术

formatter_class=argparse.RawDescriptionHelpFormatter
到argparse.ArgumentParser()


例如,请参见

谷歌翻译公司说,尾声的意思是:“蟑螂能够成功地计划,把他们混凝土盒子里散发出的臭烘烘的热血泼出来。现在这个人是一个在太空漫游的物种,一个在星空中漫游的人。”哈哈!好像是我要找的,非常感谢,先生。翻译几乎是准确的:)你在开玩笑。对吗?虽然我很欣赏你建议的精神:)不,我不是在开玩笑。肯定有更好的办法,但如果你找不到,这就行了。