0

我们需要使用subprocess.Popen().

由于输出有大量数据,当我们尝试使用Popen.wait()它时卡住了。

pipe= subprocess.Popen(cmd, shell=False,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pipe.wait()

所以,我们试图放入Popen.stdout一个变量pstdout。之后pstdout关闭,我们无法获取该文件中的内容。

pipe.stdout.closed
pstdout.closed

谁能帮助如何避免挂起或如何重新打开pstdout

4

1 回答 1

2

在函数上引用 python文档Popen.wait()

警告这将在使用stdout=PIPE和/或时发生死锁,stderr=PIPE并且子进程会向管道生成足够的输出,从而阻塞等待 OS 管道缓冲区接受更多数据。用来communicate()避免这种情况。

也许你遇到了僵局。改用通信。

p= subprocess.Popen(cmd,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.communicate()
于 2020-05-18T06:34:58.720 回答