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

时间:2009-08-21 19:35:05

标签: python

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

In [1]: zip_contents[0:5]
Out[1]: 'PK\x03\x04\x14'

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

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

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:6)

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