Python 使用boto从s3解压my_file.zip

Python 使用boto从s3解压my_file.zip,python,amazon-s3,boto,Python,Amazon S3,Boto,我正在尝试使用boto打开s3中的.zip文件。我试图直接处理数据,我希望避免创建临时文件 In [201]: import StringIO In [202]: import boto In [203]: conn = boto.connect_s3() In [204]: my_bucket = conn.get_bucket('my_bucket') In [205]: my_list = [ele for ele in my_bucket.list('my_file.zip')]

我正在尝试使用boto打开s3中的.zip文件。我试图直接处理数据,我希望避免创建临时文件

In [201]: import StringIO

In [202]: import boto

In [203]: conn = boto.connect_s3()

In [204]: my_bucket = conn.get_bucket('my_bucket')

In [205]: my_list = [ele for ele in my_bucket.list('my_file.zip')]

In [206]: f = StringIO.StringIO()

In [207]: my_list[0].get_file(f)

In [208]: f.seek(0)
如果文件未压缩,我只会使用:

my_content = my_list[0].get_contents_as_string()
但因为拉链拉上了,我收到了垃圾


我从gzip中借用了一点我的尝试,但是我找不到任何使用zip的东西。我尝试使用zipfileZipFile,但read、extract和extractall方法似乎不能满足我的需要。

您应该研究python模块gzip:

您应该能够使用gzip进行stringIO。

为了可读性,列表的理解可能应该被分解——但是我按照你最初的帖子进行了比较


祝你好运

您应该查看python模块gzip:

您应该能够使用gzip进行stringIO。

为了可读性,列表的理解可能应该被分解——但是我按照你最初的帖子进行了比较


祝你好运

我想应该是boto的,而不是goto的。我想应该是boto的,而不是goto的。
from boto.s3.connection import S3Connection
import gzip
from StringIO import StringIO

S3Conn = S3Connection() # assuming your .boto has been setup
Bucket = S3Conn.get_bucket('my_bucket')
my_list = [gzip.GzipFile(fileobj=(StringIO(ele.get_contents_as_string()))) for ele in Bucket.list()]
#for readability I pulled this out
for item in my_list:
    item.read()