正如@falsetru所说,您不能
BytesIO()直接流对象;您需要先从中获取一个字节串。这意味着
stream
在 调用
stream.getvalue()传递给 之前 ,所有内容都应已经写入
process.communicate()。
如果要 流传输 而不是一次提供所有输入,则可以删除
BytesIO()对象并直接写入管道:
from subprocess import Popen, PIPEprocess = Popen(['command', 'arg1'], stdin=PIPE, bufsize=-1)someStreamCreatingProcess(stream=process.stdin) # many `stream.write()` insideprocess.stdin.close() # done (no more input)process.wait()
someStreamCreatingProcess()在完成写入流之前,不应返回。如果立即返回,则应
stream.close()在将来的某个时间调用(删除
process.stdin.close()代码):
from subprocess import Popen, PIPEprocess = Popen(['command', 'arg1'], stdin=PIPE, bufsize=-1)someStreamCreatingProcess(stream=process.stdin) # many `stream.write()` insideprocess.wait() # stream.close() is called in `someStreamCreatingProcess`
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)