我想将BytesIO对象用作连续缓冲区(常见的用例)。但是,是否可以删除不再需要的头部字节?
看起来不像,因为只有truncate()方法。
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', 'close', 'closed', 'detach', 'fileno', 'flush', 'getvalue', 'isatty', 'next', 'read', 'read1', 'readable', 'readinto', 'readline', 'readlines', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'writelines']
答案 0 :(得分:5)
不,你不能,因为BytesIO
是公共文件对象的内存中版本。
因此,它被视为可以被覆盖或附加到的字节序列,就像从正面删除元素的文件效率低,因为它需要完全重写所有数据。
您可能想要查看collections.deque()
type。