使用颜色/样式格式时奇怪的终端输出

时间:2018-09-14 03:31:52

标签: python terminal formatting

我有代码:

import sys
for i in range(0, 20):
  for j in range(0, 20):
    sys.stdout.write('\x1b[1;32;40m' + '  ' + '\x1b[0m')
  sys.stdout.write("\n")

会在20x20的网格中输出400个白色正方形,但在大约180个正方形之后还会在其中一些正方形之间输出[1;32;40m。它并不总是在同一位置输出。为什么会发生这种情况,如何解决?

1 个答案:

答案 0 :(得分:0)

可能是 ,它是由终端中的一些缓冲错误引起的(我想)。 我无法复制您的问题,因此这里有一些建议。

缓冲到sys.stdout的输出。您可以尝试在每一行文本后刷新输出〜

sys.stdout.flush()

但是更好的解决方案可能是将一串转义码添加到字符串中,然后将其写入一个块中〜

import sys

colour_line = '\x1b[1;32;40m' + ('  ' * 20) + '\x1b[0m' + '\n'
for i in range(0, 20):
    sys.stdout.write(colour_line)

这显然简化了代码,但这与您的原始设计背道而驰。