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 相关文章推荐
django+js+ajax实现刷新页面的方法
May 22 Python
深入浅出分析Python装饰器用法
Jul 28 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
python 读写中文json的实例详解
Oct 29 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
详解Python文件修改的两种方式
Aug 22 Python
Django框架模板用法入门教程
Nov 04 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 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 current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
值得收藏的vuejs安装教程
2017/11/21 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
python开发之str.format()用法实例分析
2016/02/22 Python
python实现用户答题功能
2018/01/17 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python读取Kafka实例
2019/12/23 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
python程序文件扩展名知识点详解
2020/02/27 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
HTML5 解析规则分析
2009/08/14 HTML / CSS
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
高中英语教学反思
2014/02/04 职场文书
中班中秋节活动反思
2014/02/18 职场文书
经典演讲稿汇总
2014/05/19 职场文书
质量标语大全
2014/06/12 职场文书
2014年市场部工作总结
2014/11/25 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
招商银行工作证明
2015/06/17 职场文书
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript