如何在App Engine中读取Google Storage的zip文件?

3 投票
1 回答
1668 浏览
提问于 2025-04-17 06:26

有一个应用程序创建了一个压缩文件(zip文件),并把它存储到谷歌云存储里。我现在在处理网页服务器的部分,负责获取这个压缩文件并提取里面的内容。这个网页服务是用Python的App Engine写的。到目前为止,我已经设置好了凭证,并按照教程的指引能够列出存储桶里的内容。虽然我能读取到一些元数据和文件信息,但就是无法正确获取压缩文件的内容。按照这个指南,我现在遇到了一个问题,无法正常工作:

uri = boto.storage_uri(BUCKET_NAME, GOOGLE_STORAGE)
objs = uri.get_bucket()
files = []
for obj in objs:
  object_contents = StringIO.StringIO()
  if obj.get_key():
    obj.get_file(object_contents)
    my_zip = zipfile.ZipFile(object_contents)
    object_contents.close()
    files.append(my_zip)
print len(files)  

我收到的错误是:BadZipfile: File is not a zip file

我该如何正确读取内容呢?

1 个回答

2

现在有一个接口,可以让你直接操作Google存储里的文件。通过这个接口,你可以得到一个类似文件的对象,用来处理压缩文件,然后直接把这个对象传给zipfile模块就行了。

撰写回答