用Python实时输出

gma*_*dan 4 python python-2.7

在我的python代码中有:

print "Hello"
time.sleep(20)
print "world"
Run Code Online (Sandbox Code Playgroud)

我期望输出为

Hello 
Run Code Online (Sandbox Code Playgroud)

然后20秒后

world
Run Code Online (Sandbox Code Playgroud)

但是Helloworld正在控制台中同时打印。

Vla*_*mir 5

print操作员有效地使用sys.stdout流作为缓冲的输出。对于实时输出,您将要使用sys.stderr未缓冲的流:

import sys, time
sys.stderr.write("Hello ")
time.sleep(20)
sys.stderr.write("world\n")
Run Code Online (Sandbox Code Playgroud)

另外,您也可以在sys.stdout.flush()每次要获取输出的时候通过调用来手动刷新流缓冲区,但是我建议您不要这样做,除非您知道自己在做什么。

有关更多详细信息,请参阅Wikipedia中有关标准流(stdin,stdout和stderr)的文章