Python在循环期间打印到同一行

时间:2018-11-16 19:32:59

标签: python printing terminal

我有以下循环,该循环在每次迭代后打印一个周期:

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语句上有限制?

2 个答案:

答案 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

作为脚本的第一条语句。