擅长:python、mysql、java
<p>对于Python3x和boto3-</p>
<p>所以我用BytesIO把压缩文件读入一个缓冲区对象,然后用zipfile把解压后的流作为未压缩的数据打开,我就可以一行一行地得到数据了。</p>
<pre><code>import io
import zipfile
import boto3
import sys
s3 = boto3.resource('s3', 'us-east-1')
def stream_zip_file():
count = 0
obj = s3.Object(
bucket_name='MonkeyBusiness',
key='/Daily/Business/Banana/{current-date}/banana.zip'
)
buffer = io.BytesIO(obj.get()["Body"].read())
print (buffer)
z = zipfile.ZipFile(buffer)
foo2 = z.open(z.infolist()[0])
print(sys.getsizeof(foo2))
line_counter = 0
for _ in foo2:
line_counter += 1
print (line_counter)
z.close()
if __name__ == '__main__':
stream_zip_file()
</code></pre>