I've written some Python code that fetches a zip file from the web and into a string:
In [1]: zip_contents[0:5]
Out[1]: 'PK\x03\x04\x14'
I see there's a zipfile library, but I'm having trouble finding a function in it that I can just pass a bunch of raw zip data. It seems to want to read it from a file.
Do I really need to dump this to a temp file, or is there a way around it?
zipfile.ZipFile
accepts any file-like object, so you can use StringIO
(2.x) or 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")
Wrap your string in a cStringIO object. It looks, acts, and quacks like a file object, but resides in memory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With