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中处理字符串之endswith()方法的使用简介
May 18 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 Python
Python3多线程操作简单示例
May 22 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
详解python的argpare和click模块小结
Mar 31 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
利用Python实现斐波那契数列的方法实例
Jul 26 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中array_merge与array+array的区别
2013/06/21 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
win7安装python生成随机数代码分享
2013/12/27 Python
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python 类的继承实例详解
2017/03/25 Python
Python之reload流程实例代码解析
2018/01/29 Python
详解python单元测试框架unittest
2018/07/02 Python
详解python中的Turtle函数库
2018/11/19 Python
使用python绘制温度变化雷达图
2019/10/18 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
对python中list的五种查找方法说明
2020/07/13 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
大学生的自我鉴定范文
2014/01/21 职场文书
商场中秋节活动方案
2014/02/07 职场文书
担保书怎么写
2014/04/01 职场文书
政府信息公开实施方案
2014/05/09 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
三好学生事迹材料
2014/12/24 职场文书
业余无线电通联Q语
2022/02/18 无线电