我基本上想要做的就是文档中
gzip.GzipFile
所述的内容:
调用GzipFile对象的close()方法不会关闭fileobj,因为您可能希望在压缩数据之后附加更多材料。这也允许您将以写入打开的io.BytesIO对象作为fileobj,并使用io.BytesIO对象的getvalue()方法检索结果内存缓冲区。
对于普通文件对象,它按预期工作。
>>> import gzip
>>> fileobj = open("test", "wb")
>>> fileobj.writable()
True
>>> gzipfile = gzip.GzipFile(fileobj=fileobj)
>>> gzipfile.writable()
True
但是我无法在传递io.BytesIO
对象时获得可写的gzip.GzipFile
对象。
>>> import io
>>> bytesbuffer = io.BytesIO()
>>> bytesbuffer.writable()
True
>>> gzipfile = gzip.GzipFile(fileobj=bytesbuffer)
>>> gzipfile.writable()
False
我是否需要显式地打开io.BytesIO
进行写入?如果需要,该如何操作?或者说,open(filename, "wb")
返回的文件对象和io.BytesIO()
返回的对象之间有什么区别?我没想到过吗?