繁体   English   中英

你可以解压缩并查看Google App引擎上的内容 - Python吗?

[英]Can you Unzip and view content on Google App engine - Python?

我正在尝试使用带有XML和HTTP POST的zip将大型CSV文件上传到GAE

脚步:

  • CSV经过压缩和base64编码,并通过XML / HTTP POST发送到GAE

  • GAE - 使用minidom解析XML

  • GAE - Base64解码ZIP

  • GAE - 从Zip文件中获取CSV。

我尝试过使用zipfile,但无法弄清楚如何从base 64decoded字符串创建一个zipfile对象

我得到:TypeError:必须使用ZipFile实例作为第一个参数调用unbound方法read()(改为使用str实例)

myZipFile = base64.decodestring(base64ZipFile)

objZip = zipfile.ZipFile(myZipFile,'r')

strCSV = zipfile.ZipFile.read(objZip,'list.csv')

正如Rob所说, ZipFile需要一个类似文件的对象。 您可以使用StringIO为字符串提供类似文件的接口。

例如:

import StringIO

myZipFile = base64.decodestring(base64ZipFile)

objZip = zipfile.ZipFile(StringIO.StringIO(myZipFile),'r')

是的你可以。 事实上,我写了一篇博文, 描述了如何做到这一点

一种简单的方法可能是使用blob上传API将压缩的csv上传到blobstore,并从那里处理zip文件。 你需要伪造一个表格帖子,但是在发动机方面你的生活可能会更简单。

有一个如何在AppEngine MapReduce中处理压缩数据的例子。 请参阅BlobstoreZipInputReader类。

ZipFile不接受字符串,而是接受类似文件的对象。

一种解决方案是创建一个tempfile来写入字符串,然后将其传递给ZipFile

import tempfile
import zipfile

tmp = tempfile.TemporaryFile()
tmp.write(myZipFile) # myZipFile is your decoded string containing the zip-data
objZip = zipfile.ZipFile(tmp)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM