Here is the situation:
-
I get gzipped xml documents from Amazon S3
import boto from boto.s3.connection import S3Connection from boto.s3.key import Key conn = S3Connection('access Id', 'secret access key') b = conn.get_bucket('mydev.myorg') k = Key(b) k.key('documents/document.xml.gz') -
I read them in file as
import gzip f = open('/tmp/p', 'w') k.get_file(f) f.close() r = gzip.open('/tmp/p', 'rb') file_content = r.read() r.close()
Question
How can I ungzip the streams directly and read the contents?
I do not want to create temp files, they don’t look good.
Yes, you can use the
zlibmodule to decompress byte streams:The offset of 32 signals to the
zlibheader that the gzip header is expected but skipped.The S3 key object is an iterator, so you can do: