我想使用subprocess.popen()
将io.BytesIO()
的字节流传输到另一个程序,但我不知道如何实现或者是否可能。文档和示例都是关于文本和换行符的。
当我使用以下代码时:
import io
from subprocess import *
stream = io.BytesIO()
someStreamCreatingProcess(stream)
command = ['somecommand', 'some', 'arguments']
process = Popen(command, stdin=PIPE)
process.communicate(input=stream)
我明白了
Traceback (most recent call last):
File "./test.py", line 9, in <module>
procOut = process.communicate(input=stream)
File "/usr/lib/python2.7/subprocess.py", line 754, in communicate
return self._communicate(input)
File "/usr/lib/python2.7/subprocess.py", line 1322, in _communicate
stdout, stderr = self._communicate_with_poll(input)
File "/usr/lib/python2.7/subprocess.py", line 1384, in _communicate_with_poll
chunk = input[input_offset : input_offset + _PIPE_BUF]
TypeError: '_io.BytesIO' object has no attribute '__getitem__'
我认为popen()仅适用于文本。我的看法对吗?
有其他的方法可以实现这个功能吗?
someStreamCreatingProcess()
会立即返回,但会继续流式传输,直到明确接收到停止流式传输(在此情况下为视频)的命令。 - RedsandrosomeStreamCreatingProcess()
立即返回的情况。 - jfs