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

问题描述 投票:1回答:2

我有代码:

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之后。它并不总是在同一个地方输出。为什么会发生这种情况,如何解决?

python terminal formatting
2个回答
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)

这显然简化了代码,但这远离了原始设计。


0
投票

这不是理想的,但是

time.sleep(0.0005)

或者每个印刷品之间的不同调整时间似乎有效

© www.soinside.com 2019 - 2024. All rights reserved.