首页 > 解决方案 > 复制子进程 popen 的输出以便打印并保存到 PIPE 中?

问题描述

我想以一种subprocess.Popen('echo 1; sleep 1; echo 1', shell=True, stdout=?)可以让输出出现(在运行时)并且能够将其保存到 PIPE 或文件中的方式运行 a。

到目前为止,我proc = subprocess.Popen('echo 1; sleep 1; echo 1', shell=True, stdout=PIPE, stderr=PIPE)给了我第二个要求,然后我会打印结果out, err = proc.communicate(),但是使用communicate是阻塞的,因此,如果Popen需要很长时间,我将无法显示输出,这是不可接受的。

我可以以某种方式将该stdout=字段留空(以启用控制台输出)并将输出复制到 PIPE 吗?

更新。这与Python Popen: Write to stdout AND log file 同时不一样,因为我希望能够在运行期间访问输出,并且那里的解决方案建议访问 proc.stdout,它在运行结束之前一直处于阻塞状态。

标签: pythonpython-2.7subprocesspipestdout

解决方案


推荐阅读