我有以下循环,该循环在每次迭代后打印一个周期:
for i in range(3):
time.sleep(1)
print('.')
这完全符合预期:一个周期以1秒为增量在新行上打印到终端
. # after 1 seconds
. # after 2 seconds
. # after 3 seconds
我想将打印周期的输出更改为同一行(因此输出更紧凑且更易于阅读)。但是,当我将代码更改为以下代码时,我遇到了问题:
for i in range(3):
time.sleep(1)
print('.', end='')
在这种情况下,单行的句点仅在for循环完成时一次全部打印:
... # all after 3 seconds
我在这里做错什么了吗?还是在python print
语句上有限制?
答案 0 :(得分:4)
默认情况下,终端输出在打印换行符之前不会显示。
您可以通过向打印调用中添加flush=True
来强制部分行立即显示。
答案 1 :(得分:0)
在这里,这将为您提供帮助:
import time
for i in range(3):
time.sleep(1)
print(".", end="", flush=True)
print("")
修改
如果您使用的是python2,请确保添加
from __future__ import print_function
作为脚本的第一条语句。