Skip to main content
 首页 » 编程设计

python之标准输出和冲洗它是追加而不是冲洗

2025年05月04日14yxwkf

我想做的是在我创建的脚本底部添加一些“进度文本”。如果我 for 循环一个列表 [1,2,3,4,5] 并打印 i,那么它只是在不同的行上打印 1,2,3,4 和 5。如果我想在屏幕上打印 1,休眠 5 秒,清除它然后打印 2,怎么样?

我试过使用 stdout.write("text")、sleep、flush、stdout.write("aetlkjetjer")、sleep,它只是简单地添加到“text”语句上,而不是刷新输出。

我对 stdout.flush 的工作方式有什么误解吗?它不是应该刷新/删除先前打印的输出吗?

请您参考如下方法:

所有 .flush() 所做的就是清除缓冲区。您真正想要的是将退格键(\b) 写入stdout。

import time, sys 
 
for i in [1,2,3,4,5]: 
    sys.stdout.write(str(i)) 
    sys.stdout.flush() #flush the buffer because python buffers stdout 
    time.sleep(5) 
    sys.stdout.write("\b") #literally "write backspace". 
    sys.stdout.flush() 

如果你想对多于一位数的数字进行计数,它会变得更加复杂。