Python curses打印终端颜色转义码

时间:2015-06-04 23:17:38

标签: python bash python-3.x curses python-curses

我有一个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

“line”的含义如下:

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

有没有办法让curses解释这些颜色代码?我可以使用颜色代码对字符串进行任何处理以使curses显示它吗?或者我是否必须从bash脚本中删除颜色,然后在python中重新实现颜色化?

编辑:

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

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

通过在字节字符串上调用decode(),我可以使用curses打印字符串,尽管有文字转义序列。除非我听到其他人的意见,否则我只是手动解析这些文字转义序列并转换为使用curses颜色方法。

0 个答案:

没有答案