Python子进程:在进程终止后获取所有标准输出数据

Python子进程:在进程终止后获取所有标准输出数据,python,subprocess,pipe,Python,Subprocess,Pipe,我使用python中的子进程调用另一个可执行文件,将一些数据写入它的stdin,在所有内容写入后关闭流-这就是子进程如何知道它接收了所有内容,然后在终止后接收它的所有stdout数据-这将在一段时间后发生 在伪代码中: 开放子流程 写信给它的stdout 让程序结束 把它吐出来的东西找出来 我尝试了以下方法: import subprocess p = subprocess.Popen([cmd], stdout=subprocess.PIPE,stdin=subprocess.PIPE) p

我使用python中的子进程调用另一个可执行文件,将一些数据写入它的stdin,在所有内容写入后关闭流-这就是子进程如何知道它接收了所有内容,然后在终止后接收它的所有stdout数据-这将在一段时间后发生

在伪代码中:

开放子流程 写信给它的stdout 让程序结束 把它吐出来的东西找出来 我尝试了以下方法:

import subprocess
p = subprocess.Popen([cmd], 
stdout=subprocess.PIPE,stdin=subprocess.PIPE)
p.stdin.write(str(data))
p.stdin.close()
p.wait()
result = p.communicate()[0]
但是,我得到了以下堆栈跟踪:

    result = p.communicate()[0]
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate .
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1396, in _communicate
    self.stdin.flush()
  ValueError: I/O operation on closed file
请建议

使用通讯:


啊,太好了,我不会假装知道为什么,但这解决了问题;
import subprocess
p = subprocess.Popen([cmd], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
result = p.communicate(data)[0]