i want whats in documentation of gzip.gzipfile
:
calling gzipfile object’s close() method not close fileobj, since might wish append more material after compressed data. allows pass io.bytesio object opened writing fileobj, , retrieve resulting memory buffer using io.bytesio object’s getvalue() method.
with normal file object works expected.
>>> import gzip >>> fileobj = open("test", "wb") >>> fileobj.writable() true >>> gzipfile = gzip.gzipfile(fileobj=fileobj) >>> gzipfile.writable() true
but can't manage writable gzip.gzipfile
object when passing io.bytesio
object.
>>> import io >>> bytesbuffer = io.bytesio() >>> bytesbuffer.writable() true >>> gzipfile = gzip.gzipfile(fileobj=bytesbuffer) >>> gzipfile.writable() false
do have open io.bytesio
explicit writing, , how so? or there difference between file object returned open(filename, "wb")
, object returned io.bytesio()
didn't think of?
yes, need explicitly set gzipfile
mode 'w'
; otherwise try , take mode file object, bytesio
object has no .mode
attribute:
>>> import io >>> io.bytesio().mode traceback (most recent call last): file "<stdin>", line 1, in <module> attributeerror: '_io.bytesio' object has no attribute 'mode'
just specify mode explicitly:
gzipfile = gzip.gzipfile(fileobj=fileobj, mode='w')
demo:
>>> import gzip >>> gzip.gzipfile(fileobj=io.bytesio(), mode='w').writable() true
in principle bytesio
object opened in 'w+b'
mode, gzipfile
@ first character of file mode.
Comments
Post a Comment