我正在使用optparse模块创建一个shell脚本,jut是为了好玩,所以我想打印一个漂亮的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吗?
答案 0 :(得分:11)
默认格式化程序IndentedHelpFormatter
调用此方法:
def format_description(self, description):
if description:
return self._format_text(description) + "\n"
else:
return ""
如果您继承IndentedHelpFormatter
,则可以删除导致问题的self._format_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()
答案 1 :(得分:6)
很抱歉线程死灵,但对于那些升级到2.7的人,您现在可以通过简单传递轻松地在您的描述中显示ascII艺术
formatter_class=argparse.RawDescriptionHelpFormatter
到argparse.ArgumentParser()
请参阅http://docs.python.org/2/library/argparse.html#formatter-class,例如!
答案 2 :(得分:0)
如果所有其他方法都失败了,请使用代码生成。
最简单的方法是创建一个包含所需输出的文本文件,base64对其进行编码并将其嵌入到公开全局变量的.py文件中
现在你需要包含生成的.py,base64解码,并打印全局变量,这一切都有效。