如果我在Python字符串中有zipfile的内容,我可以解压缩而不将其写入文件吗?

mik*_*ike 16 python

我编写了一些Python代码,用于从Web获取zip文件并将其转换为字符串:

In [1]: zip_contents[0:5]
Out[1]: 'PK\x03\x04\x14'
Run Code Online (Sandbox Code Playgroud)

我看到有一个zipfile库,但是我在查找函数时遇到了麻烦,我只能传递一堆原始zip数据.它似乎想从文件中读取它.

我真的需要将其转储到临时文件中,还是有办法绕过它?

Joh*_*kin 32

zipfile.ZipFile接受任何类文件对象,因此您可以使用StringIO(2.x)或BytesIO(3.x):

try:
  from cStringIO import StringIO
except:
  from StringIO import StringIO
import zipfile

fp = StringIO('PK\x03\x04\x14')
zfp = zipfile.ZipFile(fp, "r")
Run Code Online (Sandbox Code Playgroud)


Eev*_*vee 6

将您的字符串包装在cStringIO对象中.它像文件对象一样查看,操作和嘎嘎叫,但驻留在内存中.