情况如下:
我从Amazon S3获得gzip格式的xml文档
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')
我把它们作为
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()
问题
如何直接解压缩流并读取内容?
我不想创建临时文件,它们看起来不太好。
我必须做同样的事,我就是这样做的:
是的,您可以使用^{} module 来解压缩字节流:
指向
zlib
报头的32个信号的偏移量,该报头应为gzip报头,但被跳过。S3键对象是迭代器,因此您可以执行以下操作:
对于Python3x和boto3-
所以我用BytesIO把压缩文件读入一个缓冲区对象,然后用zipfile把解压后的流作为未压缩的数据打开,我就可以一行一行地得到数据了。
相关问题 更多 >
编程相关推荐