Python sys.stdout.flush()似乎不起作用

时间:2018-05-02 09:36:16

标签: python printing overwrite flush sys

我希望通过反复覆盖打印功能来查看for循环的进度。我希望每次循环进行时都会覆盖打印行。发生的事情是,在每个循环之后,在前一个印刷线的正下方印刷了一条新线。这是通过从打印行中删除\ n来解决的,因为\ n每次都会覆盖一个新的空行,而不是覆盖第一个打印行。

import sys
import time

count1=0
x=10
for i in range(x):
    count1+=1
    sys.stdout.write("\r{} out of {}...\n".format(count1, x))
    sys.stdout.flush()
    time.sleep(.1)

我在Jupter Notebook 4.3.1中使用Python 3.6(64位)。在Windows 10上。

我查看了Stack Overflow上发布的几个问题,但我还没有能够解决它。

谢谢!

1 个答案:

答案 0 :(得分:1)

删除创建新行的“\ n”。

sys.stdout.write("\r{} out of {}...".format(count1, x))