optparse 描述中的 ASCII 艺术
我正在使用 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
我尝试了斜杠、换行符和空格的不同组合,但没有成功。
pytonista朋友,你能帮我正确显示龙猫吗?
I'm making a shell script with the optparse module, jut for fun, so I wanted to print a nice ascii drawing in place of the description.
Turns out that this code:
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.''')
renders like this:
$ ./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
I've tried a varying combination of slashes, newlines and espaces without success.
Can you, friend pytonista, help me display Totoro properly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
默认格式化程序
IndentedHelpFormatter
调用此方法:如果您子类化
IndentedHelpFormatter
,则可以删除导致问题的self._format_text
调用:The default formatter,
IndentedHelpFormatter
, calls this method:If you subclass
IndentedHelpFormatter
, you can remove theself._format_text
call which is causing the problem:对于线程死灵抱歉,但是对于那些升级到 2.7 的人,您现在可以通过简单地传递
到 argparse.ArgumentParser()
来轻松地在描述中显示 ascII 艺术,请参阅 http://docs.python.org/2/library/argparse.html#formatter-class!
Sorry for the thread necromancy, but for those who upgraded to 2.7 you can now easily display ascII art in your description by simply passing
to argparse.ArgumentParser()
see http://docs.python.org/2/library/argparse.html#formatter-class for example!
如果其他方法都失败,请使用代码生成。
最简单的方法是创建一个包含所需输出的文本文件,对其进行 base64 编码并将其嵌入到公开全局变量的 .py 文件中。
现在您需要包含生成的 .py、base64 解码并打印全局变量这一切都有效。
If all else fails, use code generation.
The simplest way would be to create a text file containing your desired output, and base64 encode it and embed it in a .py file that exposes a global variable
Now you need to include the generated .py, base64 decode, and print the global variable and it all works.