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

yipeiwu_com6年前Python基础

复制代码 代码如下:

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")

相关文章

Python将多个list合并为1个list的方法

Python将多个list合并为1个list的方法

1、可以使用"+"号完成操作 输出为: [1, 2, 3, 8, 'google', 'com'] 2、使用extend方法 输入相同 3、使用切片 输出相同 PS:len(l1)...

浅谈python中字典append 到list 后值的改变问题

看一个例子 d={'test':1} d_test=d d_test['test']=2 print d 如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变...

用Python删除本地目录下某一时间点之前创建的所有文件的实例

因为工作原因,需要定期清理某个文件夹下面创建时间超过1年的所有文件,所以今天集中学习了一下Python对于本地文件及文件夹的操作。网上 这篇文章 简明扼要地整理出最常见的os方法,抄袭如...

Python聚类算法之DBSACN实例分析

Python聚类算法之DBSACN实例分析

本文实例讲述了Python聚类算法之DBSACN。分享给大家供大家参考,具体如下: DBSCAN:是一种简单的,基于密度的聚类算法。本次实现中,DBSCAN使用了基于中心的方法。在基于中...

对python指数、幂数拟合curve_fit详解

对python指数、幂数拟合curve_fit详解

1、一次二次多项式拟合 一次二次比较简单,直接使用numpy中的函数即可,polyfit(x, y, degree)。 2、指数幂数拟合curve_fit 使用scipy.optimiz...