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的压缩包。英文原文:https://pymotw.com/3/zipfile/index.html
译者:诗书塞外
python解压zip_用Python处理ZIP压缩包相关推荐
- python解压gz_使用python请求下载压缩tar.gz文件并使用tar解压它
我需要使用请求调用来下载tar gz文件,我发现requests.get会自动解压缩文件,我尝试使用给定的解决方案 here 但当我试图用tar解压它时,它说它不是gzip格式. 我尝试了以下方法: ...
- Python解压所有压缩包到同一文件夹下
Python解压同一个目录下的所有压缩包 初衷 在学习黑马程序员课程的时候,由于压缩包很多,需要一个一个解压特别麻烦,所以写了一个脚本来一次性解压所有的压缩包. import zipfile impo ...
- python解压zip文件_python-29 python解压压缩包的几种方法
这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...
- 使用Python解压zip、rar文件
解压 zip 文件 基本解压操作 import zipfile''' 基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]]) ...
- python解压版怎么安装_python 解压版 zip file 安装
python 解压版 zip file 安装 Python Releases for Windows 找到最新稳定版本的 "Download Windows x86-64 embeddabl ...
- Python解压zip文件出现TypeError: pwd: expected bytes, got str的解决方案
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
- python解压rar_Python解压 rar、zip、tar文件的方法
Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile impor ...
- python压缩包怎么安装-详解python解压压缩包的五种方法
这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...
- python解压压缩包的几种方法
这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. ...
最新文章
- 纯python好找工作吗_学西点好找工作吗?
- 一步一步SharePoint 2007之十二:实现Form认证(2)——创建添加管理帐户的工程
- 类路径是什么意思_多播是什么意思 多播介绍【详解】
- cacti 整合nagios,以及总是off处理办法!
- hbase sqoop 实验_SQOOP安装及使用-实验
- Shell字符串比较(等于、不等于、大于、小于、起始字符、结尾字符)
- php zhxing iptables,Linux iptables 扩展 ipset 使用教程
- Django框架 之 Form表单和Ajax上传文件
- delphi10.1调用BarTender2016R5文件打印标签
- 二、逻辑回归LR面试题总结
- Word文档怎么添加删除线
- 一种贴片晶振异常情况,及晶振频率评估方法
- idea+springmvc+spring+mybatis+maven整合返回json数据web api-
- 怪物之心无法触发_《异度神剑2》力男支线任务怪物之心流程介绍
- Python各类库的简介(转)
- nosql包括的数据库
- SSL: CERTIFICATE_VERIFY_FAILED
- SEM关键词匹配模式_精确、精确包含、同义包含
- 教师超实用的微课制作软件
- 计算机中丢失vcomp110.dll,《进击的巨人》开丢失VCOMP110.DLL问题解决方法一览
热门文章
- 【引言集】 孔子:论语为政
- 【转】从P1到P7——我在淘宝这7年
- 烈焰遮天 cocos 手游mmo 源码 解析
- 读取xml文件信息并存入数据库
- 看我用Python一秒发数百份邮件,让财务部妹子追着喊6
- 计算机回收站设置大小,电脑回收站无法调整容量的大小怎么办?
- 75%医用输液泵受漏洞威胁 360专家呼吁构建数字安全防御体系
- hbuilder在服务器端打开网页,HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解...
- ASP.NET常见命名空间及其功能描述
- autojs root权限命令