我创建了两个脚本,当其中一个脚本执行另一个脚本并尝试实时接收它时。
尝试获取输出的脚本:
import subprocess
p = subprocess.Popen("python .\\print.py", stdout=subprocess.PIPE)
print p.stdout.readline()
第二个脚本:
import time
print "1se12d12d32d3223"
print "\r"
time.sleep(10000)
问题是我只在子进程终止时获取输出,即使该行已经写入stdout。
我尝试了以下内容:
我尝试做的所有事情都是在进程仍处于活动状态时读取子进程的第一行stdout。我怎么能在python中做到这一点?
答案 0 :(得分:0)
默认情况下,Python缓冲其输出。在某些情况下,输出会自动刷新。例如。当您在终端中运行第二个脚本时,您将立即看到输出。
您可以在sys.stdout.flush()
来电之前插入sleep()
来明确刷新输出。