python使用内存zipfile对象在内存中打包文件示例

228次阅读  |  发布于5年以前

复制代码 代码如下:

import zipfile
import StringIO

class InMemoryZip(object):
def init(self):

Create the in-memory file-like object

    self.in_memory_zip = StringIO.StringIO()

def append(self, filename_in_zip, file_contents):  
    '''Appends a file with name filename_in_zip and contents of   
    file_contents to the in-memory zip.'''  
    # Get a handle to the in-memory zip in append mode  
    zf = zipfile.ZipFile(self.in_memory_zip, "a", zipfile.ZIP_DEFLATED, False)

    # Write the file to the in-memory zip  
    zf.writestr(filename_in_zip, file_contents)

    # Mark the files as having been created on Windows so that  
    # Unix permissions are not inferred as 0000  
    for zfile in zf.filelist:  
        zfile.create_system = 0       

    return self

def read(self):  
    '''Returns a string with the contents of the in-memory zip.'''  
    self.in_memory_zip.seek(0)  
    return self.in_memory_zip.read()

def writetofile(self, filename):  
    '''Writes the in-memory zip to a file.'''  
    f = file(filename, "w")  
    f.write(self.read())  
    f.close()

if name == "main":

Run a test

imz = InMemoryZip()  
imz.append("test.txt", "Another test").append("test2.txt", "Still another")  
imz.writetofile("test.zip")  

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8