您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我可以将io.BytesIO()流传输到Python中的subprocess.popen()吗?

我可以将io.BytesIO()流传输到Python中的subprocess.popen()吗?

正如@falsetru所说,您不能BytesIO()直接流对象;您需要先从中获取一个字节串。这意味着stream 调用stream.getvalue()传递给 之前 ,所有内容都应已经写入process.communicate()

如果要 流传输 而不是一次提供所有输入,则可以删除BytesIO()对象并直接写入管道:

from subprocess import Popen, PIPE

process = Popen(['command', 'arg1'], stdin=PIPE, bufsize=-1)
someStreamCreatingProcess(stream=process.stdin) # many `stream.write()` inside
process.stdin.close() # done (no more input)
process.wait()

someStreamCreatingProcess()在完成写入流之前,不应返回。如果立即返回,则应stream.close()在将来的某个时间调用删除process.stdin.close()代码):

from subprocess import Popen, PIPE

process = Popen(['command', 'arg1'], stdin=PIPE, bufsize=-1)
someStreamCreatingProcess(stream=process.stdin) # many `stream.write()` inside
process.wait() # stream.close() is called in `someStreamCreatingProcess`
python 2022/1/1 18:35:57 有232人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶