zipdir with in-memory stuff added

This commit is contained in:
sigizmund 2009-12-18 11:40:29 +00:00
parent 615228a2ac
commit 33855b7877

View file

@ -1,6 +1,8 @@
import os
import zipfile
import StringIO
def toZip(filename, directory):
zippedHelp = zipfile.ZipFile(filename, "w", compression=zipfile.ZIP_DEFLATED)
lst = os.listdir(directory)
@ -34,6 +36,27 @@ def addFolderToZip(zippedHelp,folder,fpath):
elif os.path.isdir(f):
addFolderToZip(zippedHelp,f)
def inMemoryZip(files):
# files have a structure of {'path/to/file' => content} dictionary
io = StringIO.StringIO()
memzip = zipfile.ZipFile(io, 'a', compression=zipfile.ZIP_DEFLATED)
memzip.debug = 3
for path in files:
memzip.writestr(path, files[path])
for zf in memzip.filelist:
zf.create_system = 0
memzip.close()
return io.getvalue()
if __name__ == '__main__':
toZip('sample.epub', "books/A_Time_To_Reflect")
z = zipfile.ZipFile('sample.epub', 'r')
# toZip('sample.epub', "books/A_Time_To_Reflect")
# z = zipfile.ZipFile('sample.epub', 'r')
files = {'test.txt' : 'test', 'data/abc.txt' : 'abc'}
data = inMemoryZip(files)
f = open('res.zip', 'w')
f.write(data)
f.close()