7

我有一个 bash 脚本,可以打印一个漂亮的大彩色表格,使用从tput. 我的 curses 应用程序需要调用这个 bash 脚本并将输出放在屏幕上。

当我尝试这样做时,curses 会爆炸,堆栈跟踪结束于:

File "./dostuff.py", line 38, in print_art
    screen.addstr(y, x_start, line)
TypeError: must be str, not bytes

其中“线”是这样的:

'\x1b[44m\x1b[30mcard major minor revision runs updated\x1b(B\x1b[m\x1b(B\x1b[m\n'

有没有办法让诅咒解释这些颜色代码?我可以对带有颜色代码的字符串进行任何处理以使诅咒显示它吗?还是我必须基本上从 bash 脚本中删除颜色,然后在 python 中重新实现着色?

编辑:

获取 bash 输出的命令类似于:

print_art(subprocess.Popen(["./automount", "backup", "list"], stdout=subprocess.PIPE).communicate()[0])

通过调用decode()字节字符串,我可以得到curses来打印字符串,尽管使用文字转义序列。除非我收到其他人的消息,否则我将手动解析这些文字转义序列并转换为使用 curses 颜色方法。

4

0 回答 0