我有代码:
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
。它并不总是在同一位置输出。为什么会发生这种情况,如何解决?
答案 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)
这显然简化了代码,但这与您的原始设计背道而驰。