【发布时间】:2016-07-28 08:58:17
【问题描述】:
我正在尝试制作一个简单的 python 脚本来启动一个子进程并监视其标准输出。这是代码中的一个sn-p:
process = subprocess.Popen([path_to_exe, os.path.join(temp_dir,temp_file)], stdout=subprocess.PIPE)
while True:
output=process.stdout.readline()
print "test"
问题在于脚本在output=process.stdout.readline() 上挂起,并且print "test" 行仅在子进程终止后执行。
有没有办法读取标准输出并打印它而不必等待子进程终止?
我要启动的子进程是一个 Windows 二进制文件,我没有它的源代码。
我发现了几个类似的问题,但答案仅适用于 Linux 或我有我要启动的 suprocess 的来源。
【问题讨论】:
-
我认为您需要提供有关可执行文件的更多详细信息。二进制文件的样本输出是什么?单行还是多行?听起来二进制文件不太适合这样的接口。因为只有在二进制终止时才会刷新输出。
-
我实际上想模糊不同的二进制文件(Acrobat 阅读器以及其他)并检测崩溃。我可以得到退出代码,但我也想要标准输出/错误。
标签: python subprocess output standards