python zip压缩_用Python处理ZIP压缩包
标准库模块zipfile可以用来处理zip压缩包。
测试zip文件
is_zipfile()方法返回一个布尔值,说明参数传入的路径所代表的文件是不是一个zip压缩包。
如果参数所指向的路径不存在,is_zipfile()会返回False。
从压缩包中读取元数据
使用ZipFile类来处理压缩包。它既支持从压缩包中读取数据,也支持向压缩包中添加新的文件。
namelist()方法返回压缩包中所有文件的名字。
名字仅仅是压缩包信息的一小部分。如果要获取压缩包内文件的全部信息,使用infolist()和getinfo()方法。
除了例子中给出的这些信息外,还有更多的属性信息。想要将这些信息解析为有意义的内容,需要仔细阅读ZIP的标准文档。
如果你事先知道zip压缩包中的文件名称,你可以直接通过getInfo方法获取ZipInfo对象。
如果你想获取的文件不存在,getInfo会抛出一个异常KeyError。
从压缩包中提取文件
通过read方法可以读取压缩包内文件的数据,参数是该文件的文件名。
必要时,压缩文件会自动解压缩。
创建新的压缩包
要创建新的压缩包,实例化一个ZipFile对象,附带一个模式参数'w'。如果压缩文件已经存在了,则会被清空,重新创建。想要添加文件,使用write方法。
默认情况下,zip包是不压缩的。
如果要添加压缩功能,需要使用zlib包。如果你安装了zlib包,你可以把单个文件或者整个文件夹设置为zipfile.ZIP_DEFLATED。默认压缩模式是zipfile.ZIP_STORED,这种模式下文件是不经压缩直接加入压缩包的。
这时,压缩包中的文件就被压缩了。
从其他数据源添加文件,而不是添加一个已经存在的文件
有时候需要在没有文件的情况下,从其他数据源生成一个压缩文件来添加到压缩包中。相比于把数据写入一个文件,然后再把文件加入压缩包,使用writestr方法把数据直接加入压缩包,这种方式更加直接一些。
在这种情况下,ZipFile的compress_type参数用来指定压缩的方式,因为writestr方法没有指定压缩方式的参数。
创建压缩包时设置ZipInfo
通常来说,压缩文件创建时,文件的创建时间和修改时间都会被自动设置。但是我们也可以自定义这些信息,只要我们给writestr方法传入一个ZipInfo对象。
在这个例子中,最后修改时间被设置为了当前时间,数据被压缩了,而且create_system被设置为了假值,而且还给这个文件添加了一个简单的备注。
向文件结尾追加内容
除了创建一个新的压缩包,你还可以向压缩包的结尾添加内容。要打开一个文件在最后追加内容,使用打开模式'a'。
最后这个压缩包包含有两个文件
Python Zip包
使用zipimport,Python可以从zip中导入模块,只要这些压缩包在sys.path列出的路径中。使用PyZipFile类也可以构建一个这样能够被Python导入的Zip包。该类的writepy方法能够遍历一个文件夹,找出其中的pyc和pyo文件,将这些文件加入Zip包。如果没有这些文件,则自动运行Python,生成这些文件再添加进去。
将PyZipFile的debug参数设置为3,会开启debug模式,它在编译py文件时就会有相应的输出出现在终端中。
局限
zipfile模块不支持为压缩包附带备注,也不支持跨磁盘压缩包。但是它支持ZIP64扩展的大于4GB的压缩包。
python zip压缩_用Python处理ZIP压缩包相关推荐
- python分割压缩_【python 多线程】下载文件分批压缩
大体做的功能为: 1.调用api接口,获取json数据:2.json 数据转换为一个csv文件:3.csv文件里的每行数据转换成单个xml文件:4.每5个xml文件进行打包 用到的模块为: csv,x ...
- python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题
python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题 问题描述--python 使用zipfile模块 读取并且解压缩包,出现中文乱码问题 问题原因 python 使用这个模块 ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python enumerate函数_关于python中enumerate和zip函数的用法及举例
关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...
- python如何下载zip文件_使用python-mechaniz下载zip文件
我正在使用python2.7.mechanize和beautifulsoup,如果有帮助,我可以使用urllib 好的,我正在尝试下载两个不同的zip文件,它们位于不同的html表中.我知道特定文件在 ...
- python集群_使用Python集群文档
python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...
- python实用么_使用Python这么多年,才发现Python还有这些实用的功能和特点
在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性.一些可以说是非常有用,但却没有充分利用.考虑到这一点,我编辑了一些你应该了解的Python功能特色. 带任意数量参数的函数 你可 ...
- python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合
本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...
- python编写代码_用 Python 编写干净、可测试、高质量的代码
用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...
最新文章
- Matlab与线性代数 -- 矩阵的连接
- seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side)、添加数值标签进行标记、并自定义条形图数值标签的格式
- mysql语言定义_MySQL定义语言[DDL]
- computed vue 不 触发_vuejs render何时执行?以及使用vue.$refs遇到的坑。
- 趣谈网络协议笔记-二(第十讲)
- 迷失只是暂时 2011-03-13
- redhad yum 安装mysql_redhat7通过yum安装mysql5.7.17教程
- python公式计算器_Python-计算器
- ASP.NET几种安全验证方法(一)
- sv_labs学习笔记——sv_lab2(System Verilog)
- 2. Magento2 --- (2) theme --- structure
- python加法赋值运算符为_Python中什么是算术运算符、赋值运算符和复合运算符?...
- jupternote不同类之间相互调用(调用ipynb文件)
- 麻瓜python视频教程_麻瓜编程Python Web基础视频教程
- Python 教程之再见 Excel你 Python 的spreadsheets电子表格
- pc彩色版伏魔记开放Java源码
- 安川e1000中文说明书_安川(YASKAWA)变频器E1000说明书.pdf
- Java开发--implement Serializable
- 360安全备份 android,360安全卫士号码备份如何还原到另一个手机上
- java修改mariadb数据_MariaDB更新数据