为什么换行不是彩色格式的?

时间:2017-07-19 19:07:50

标签: python python-3.x colors terminal

我已经按照this解决方案对终端上的矩阵进行颜色格式化。但是当我打印它时,为了分隔矩阵的行而添加的换行没有格式化。我期望整个终端变成背景白色和黑色文本(对应于矩阵高度的区域),但显然不是。为什么呢?

这是代码:

m = np.full((4,4),'0',dtype=np.str_)
print('\x1b[0;30;47m\n'+'\n\n'.join('   '+'   '.join(line) for line in m)+'\n\x1b[0m')

PROOF enter image description here 我使用默认的ubuntu 14.04终端

解决 最后,我简单地将颜色格式应用于由新行分隔的每个字符串。

2 个答案:

答案 0 :(得分:1)

我认为这种行为的原因是大多数终端仅将背景颜色应用于实际打印的字符,但\n\n会生成包含字符的行(而不是一行)充满空间)。至少那是我手边的所有终端所做的。试试这个:

print('\x1b[0;30;47m\n' + '\n'.join([' '*i for i in range(10)]) + '\n\x1b[0m')

你可能会看到类似楼梯的模式:stair-like pattern

答案 1 :(得分:1)

单元格背景仅在屏幕更新时着色。当程序打印换行符时,它“仅”使光标位置向下移动(不更新单元格)。

但是,如果您修改程序以打印更多行,即向下到屏幕底部,它将执行不同的操作:

  • 光标无法再向下移动。
  • 屏幕“索引”(向上滚动一行)和
  • 新曝光的线条将被着色。

这是因为终端从xterm和Linux控制台复制行为。终端实际上​​有几个功能在擦除部分屏幕时结合形成其行为。

进一步阅读: