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下如何让web元素的生成更简单的分析
Jul 17 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
python中返回矩阵的行列方法
Apr 04 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
简单了解python代码优化小技巧
Jul 08 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
详解python的xlwings库读写excel操作总结
Feb 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHPCMS的使用小结
2010/09/20 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
JavaScript中this详解
2015/09/01 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
简历上的自我评价怎么写
2014/01/28 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
心得体会的写法
2014/09/05 职场文书
小学班级口号大全
2015/12/25 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
Golang 字符串的常见操作
2022/04/19 Golang
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android