Python unzipping stream of bytes?

前端 未结 4 700
时光取名叫无心
时光取名叫无心 2020-11-27 15:34

Here is the situation:

  • I get gzipped xml documents from Amazon S3

    import boto
    from boto.s3.connection import S3Connection
    from boto.s3.key i         
    
    
            
4条回答
  •  清酒与你
    2020-11-27 16:36

    Yes, you can use the zlib module to decompress byte streams:

    import zlib
    
    def stream_gzip_decompress(stream):
        dec = zlib.decompressobj(32 + zlib.MAX_WBITS)  # offset 32 to skip the header
        for chunk in stream:
            rv = dec.decompress(chunk)
            if rv:
                yield rv
    

    The offset of 32 signals to the zlib header that the gzip header is expected but skipped.

    The S3 key object is an iterator, so you can do:

    for data in stream_gzip_decompress(k):
        # do something with the decompressed data
    

提交回复
热议问题