我找到了一些看起来和我的问题类似的问题,但它们没有给出我可以使用的解决方案(最接近的是:subprocess output to stdout and to PIPE)。
问题是:我想使用subprocess启动一个耗时较长的进程。在运行命令后,我需要解析stdout和stderr的输出。
目前我是这样做的:
p = subprocess.Popen( command_list, stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
out, error_msg = p.communicate()
print out + "\n\n" + error_msg
#next comes code in which I check out and error_msg
但这种方法的缺点是用户在进程运行时无法看到输出结果,只有在结尾才会打印输出。
是否有一种方法可以在命令运行时打印输出(就像我没有使用stdout/stderr=subprocess.PIPE一样),并且最终仍然能够通过p.communicate获得输出?
注意:我目前正在开发Python 2.5上(这个Python版本的旧软件发布版)。