为什么我的python输出被延迟到程序的末尾?

更新时间:2023-04-02 12:44:51

问题阐述

我有一个非常简单的应用程序:

import sys
from time import sleep

for i in range(3):
    sys.stdout.write('.')
    sleep(1)

print('Welcome!')

我希望它每秒(3次)打印一个点,之后它应该显示"欢迎!"。不幸的是,它只需等待三秒钟,然后一次打印出所有内容。我使用的是一台运行普通Python2.7的Mac,我不知道为什么这段代码会是这样的。有什么建议吗?

精准答案

因为sys.stdout被缓存了。使用flush

import sys
from time import sleep

for i in range(3):
    sys.stdout.write('.')
    sys.stdout.flush()
    sleep(1)

print('Welcome!')