标准库模块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的压缩包。英文原文:https://pymotw.com/3/zipfile/index.html

译者:诗书塞外

python解压zip_用Python处理ZIP压缩包相关推荐

  1. python解压gz_使用python请求下载压缩tar.gz文件并使用tar解压它

    我需要使用请求调用来下载tar gz文件,我发现requests.get会自动解压缩文件,我尝试使用给定的解决方案 here 但当我试图用tar解压它时,它说它不是gzip格式. 我尝试了以下方法: ...

  2. Python解压所有压缩包到同一文件夹下

    Python解压同一个目录下的所有压缩包 初衷 在学习黑马程序员课程的时候,由于压缩包很多,需要一个一个解压特别麻烦,所以写了一个脚本来一次性解压所有的压缩包. import zipfile impo ...

  3. python解压zip文件_python-29 python解压压缩包的几种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  4. 使用Python解压zip、rar文件

    解压 zip 文件 基本解压操作 import zipfile''' 基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]]) ...

  5. python解压版怎么安装_python 解压版 zip file 安装

    python 解压版 zip file 安装 Python Releases for Windows 找到最新稳定版本的 "Download Windows x86-64 embeddabl ...

  6. Python解压zip文件出现TypeError: pwd: expected bytes, got str的解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  7. python解压rar_Python解压 rar、zip、tar文件的方法

    Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile impor ...

  8. python压缩包怎么安装-详解python解压压缩包的五种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  9. python解压压缩包的几种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar  .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. ...

最新文章

  1. 纯python好找工作吗_学西点好找工作吗?
  2. 一步一步SharePoint 2007之十二:实现Form认证(2)——创建添加管理帐户的工程
  3. 类路径是什么意思_多播是什么意思 多播介绍【详解】
  4. cacti 整合nagios,以及总是off处理办法!
  5. hbase sqoop 实验_SQOOP安装及使用-实验
  6. Shell字符串比较(等于、不等于、大于、小于、起始字符、结尾字符)
  7. php zhxing iptables,Linux iptables 扩展 ipset 使用教程
  8. Django框架 之 Form表单和Ajax上传文件
  9. delphi10.1调用BarTender2016R5文件打印标签
  10. 二、逻辑回归LR面试题总结
  11. Word文档怎么添加删除线
  12. 一种贴片晶振异常情况,及晶振频率评估方法
  13. idea+springmvc+spring+mybatis+maven整合返回json数据web api-
  14. 怪物之心无法触发_《异度神剑2》力男支线任务怪物之心流程介绍
  15. Python各类库的简介(转)
  16. nosql包括的数据库
  17. SSL: CERTIFICATE_VERIFY_FAILED
  18. SEM关键词匹配模式_精确、精确包含、同义包含
  19. 教师超实用的微课制作软件
  20. 计算机中丢失vcomp110.dll,《进击的巨人》开丢失VCOMP110.DLL问题解决方法一览

热门文章

  1. 【引言集】 孔子:论语为政
  2. 【转】从P1到P7——我在淘宝这7年
  3. 烈焰遮天 cocos 手游mmo 源码 解析
  4. 读取xml文件信息并存入数据库
  5. 看我用Python一秒发数百份邮件,让财务部妹子追着喊6
  6. 计算机回收站设置大小,电脑回收站无法调整容量的大小怎么办?
  7. 75%医用输液泵受漏洞威胁 360专家呼吁构建数字安全防御体系
  8. hbuilder在服务器端打开网页,HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解...
  9. ASP.NET常见命名空间及其功能描述
  10. autojs root权限命令