我有代码:
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
之后。它并不总是在同一个地方输出。为什么会发生这种情况,如何解决?
这可能是由终端中的一些缓冲错误造成的(我猜)。我不能复制你的问题,所以这里有一些建议。
输出到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)
这显然简化了代码,但这远离了原始设计。
这不是理想的,但是
time.sleep(0.0005)
或者每个印刷品之间的不同调整时间似乎有效