我正在尝试使用python创建一个简单的komodo编辑程序,使其在运行时将在命令输出中打印出10秒钟的时间。
代码如下:
import time
seconds = 0
while seconds != 10:
time.sleep(1)
seconds += 1
print(">", seconds)
当我在komodo edit中运行它时,它不会按要求打印出数字。
我希望数字1在一秒钟后打印,数字2在两秒钟后打印,依此类推。
相反,它会在10秒钟后打印出所有数字(1-10)。
我已经在python IDLE中运行了这个完全相同的程序,它可以正常工作,每秒打印一个数字。
我在做什么错或者我不了解/不知道什么?
答案 0 :(得分:4)
该程序可能在不相信其输出连接到终端的环境中运行,因此stdout
默认为块缓冲,而不是行缓冲。由于输出的数据很少,因此缓冲区永远不会填满,只会在程序退出前才刷新。
最简单的解决方法是将flush=True
参数添加到您的print
调用中,以便在每个print
之后显式刷新缓冲区:
print(">", seconds, flush=True)