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


Posted in Python onApril 30, 2014
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 相关文章推荐
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
采用python实现简单QQ单用户机器人的方法
Jul 03 Python
Python求解平方根的方法
Mar 11 Python
Python读写文件方法总结
Jun 09 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
学python安装的软件总结
Oct 12 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
python 链接sqlserver 写接口实例
Mar 11 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
python数据结构之二叉树的统计与转换实例
Apr 29 #Python
python数据结构之二叉树的遍历实例
Apr 29 #Python
python数据结构之二叉树的建立实例
Apr 29 #Python
python数据结构树和二叉树简介
Apr 29 #Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 #Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 #Python
Python的ORM框架SQLObject入门实例
Apr 28 #Python
You might like
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
YII中assets的使用示例
2014/07/31 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php实现微信公众号无限群发
2015/10/11 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
浅谈JS运算符&&和|| 及其优先级
2016/08/10 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
对python中UDP,socket的使用详解
2019/08/22 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
护理学专业推荐信
2013/12/03 职场文书
客服主管岗位职责
2013/12/13 职场文书
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
狼和鹿教学反思
2014/02/05 职场文书
升职演讲稿范文
2014/05/23 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书