标准库模块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压缩包相关推荐

  1. python分割压缩_【python 多线程】下载文件分批压缩

    大体做的功能为: 1.调用api接口,获取json数据:2.json 数据转换为一个csv文件:3.csv文件里的每行数据转换成单个xml文件:4.每5个xml文件进行打包 用到的模块为: csv,x ...

  2. python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题

    python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题 问题描述--python 使用zipfile模块 读取并且解压缩包,出现中文乱码问题 问题原因 python 使用这个模块 ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  5. python enumerate函数_关于python中enumerate和zip函数的用法及举例

    关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...

  6. python如何下载zip文件_使用python-mechaniz下载zip文件

    我正在使用python2.7.mechanize和beautifulsoup,如果有帮助,我可以使用urllib 好的,我正在尝试下载两个不同的zip文件,它们位于不同的html表中.我知道特定文件在 ...

  7. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  8. python实用么_使用Python这么多年,才发现Python还有这些实用的功能和特点

    在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性.一些可以说是非常有用,但却没有充分利用.考虑到这一点,我编辑了一些你应该了解的Python功能特色. 带任意数量参数的函数 你可 ...

  9. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  10. python编写代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

最新文章

  1. Matlab与线性代数 -- 矩阵的连接
  2. seaborn可视化绘制双变量分组条形图(Customizing Annotation of Bars: Side-by-side)、添加数值标签进行标记、并自定义条形图数值标签的格式
  3. mysql语言定义_MySQL定义语言[DDL]
  4. computed vue 不 触发_vuejs render何时执行?以及使用vue.$refs遇到的坑。
  5. 趣谈网络协议笔记-二(第十讲)
  6. 迷失只是暂时 2011-03-13
  7. redhad yum 安装mysql_redhat7通过yum安装mysql5.7.17教程
  8. python公式计算器_Python-计算器
  9. ASP.NET几种安全验证方法(一)
  10. sv_labs学习笔记——sv_lab2(System Verilog)
  11. 2. Magento2 --- (2) theme --- structure
  12. python加法赋值运算符为_Python中什么是算术运算符、赋值运算符和复合运算符?...
  13. jupternote不同类之间相互调用(调用ipynb文件)
  14. 麻瓜python视频教程_麻瓜编程Python Web基础视频教程
  15. Python 教程之再见 Excel你 Python 的spreadsheets电子表格
  16. pc彩色版伏魔记开放Java源码
  17. 安川e1000中文说明书_安川(YASKAWA)变频器E1000说明书.pdf
  18. Java开发--implement Serializable
  19. 360安全备份 android,360安全卫士号码备份如何还原到另一个手机上
  20. java修改mariadb数据_MariaDB更新数据

热门文章

  1. Windows7 删除双系统引导中的一个
  2. PS图片压缩教程,教你快速压缩jpg图片文件的大小而又不失真!
  3. TCP实现消息传输和文件传输,UDP实现消息发送和聊天,URL下载文件
  4. C# 22. 新建文件夹
  5. 一年月份大小月口诀_农历大小月卦口诀详解(最新版)
  6. 如何将HTML与win10桌面壁纸,Win10默认桌面背景怎么设置
  7. 【面试常问】Redis的持久化机制是什么?各自的优缺点?
  8. eclipse的优缺点
  9. 在 Flutter 中创建一个动画屏幕
  10. Systrace 响应速度实战 2 :响应速度实战分析 - 以启动速度为例