如何在 child 还活着的时候读取它的标准输出

How to read from child's stdout while it still alive

我创建了两个脚本,其中一个脚本执行另一个脚本并尝试实时接收它的输出。

尝试获取输出的脚本:

import subprocess
p = subprocess.Popen("python .\print.py", stdout=subprocess.PIPE)
print p.stdout.readline()

第二个脚本:

import time
print "1se12d12d32d3223"
print "\r"
time.sleep(10000)

问题是我只在 child 进程终止时才得到输出,即使该行已经写入标准输出。

我尝试了以下方法:

我想做的就是在 child 进程还活着的时候读取 stdout 的第一行。我怎样才能在 python 中做到这一点?

默认情况下,Python 缓冲其输出。在某些情况下会自动刷新输出。例如。当您 运行 终端中的第二个脚本时,您将立即看到输出。

您可以通过在 sleep() 调用之前插入 sys.stdout.flush() 来显式刷新输出。