Python 3.x - 控制台中“end =”命令的奇怪行为?

时间:2015-03-02 23:55:07

标签: python-3.x

我们说我有这个基本代码:

import time

print("Thinking",end=" ")
for i in range(3):
    time.sleep(1)
    print(".",end=" ")
time.sleep(1)
print("I have the answer!")

刚才给出了一个例子,因为复制整个事情很长,但在基本层面上,这就是我想要做的事情。在shell中它工作正常,它将打印"思考",等待一秒,打印一个点,再等一下,打印另一个点,依此类推。 但是,在控制台中,它会等待3秒然后立即打印出来,为什么会这样? 我已经发现它必须与" end ="命令,有什么办法可以解决这个问题,但是能够用时间间隔在同一条线上打印东西吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

从3.3开始,更简单的答案是在打印电话中添加flush=True

print(".",end=" ", flush=True)

答案 1 :(得分:0)

import sys并在致电sys.stdout.flush()后致电print

默认情况下,stdout是行缓冲的。这意味着它会在内部缓存写入,直到它看到换行符。只有在写入换行符时,才会对文件进行Python flush