Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作。要进行相关操作,首先需要实例化一个 ZipFile 对象。ZipFile 接受一个字符串格式压缩包名称作为它的必选参数,第二个参数为可选参数,表示打开模式,类似于文件操作,有r/w/a三种模式,分别代表读、写、添加,默认为r,即读模式。

1. zip 文件查看

假设当前有如下文件结构:

代码演示如下:

>>> import zipfile, os

>>> os.chdir(‘C:\\’) # move to the folder with example.zip

>>> exampleZip = zipfile.ZipFile(‘example.zip’)

>>> exampleZip.namelist()

[‘spam.txt’, ‘cats/’, ‘cats/catnames.txt’, ‘cats/zophie.jpg’]

>>> spamInfo = exampleZip.getinfo(‘spam.txt’)

>>> spamInfo.file_size

13908

>>> spamInfo.compress_size

3828

>>> ‘Compressed file is %sx smaller!’ % (round(spamInfo.file_size / spamInfo

.compress_size, 2))

‘Compressed file is 3.63x smaller!’

>>> exampleZip.close()

如上代码所示,ZipFile 对象拥有一个名为 namelist() 的方法,该方法返回一个所含该压缩包所有文件及文件夹的字符串列表。可以把返回的列表中的字符串传递到 getinfo() 方法中,以获取特定文件或文件夹的更多信息。getinfo() 方法还拥有以下属性:

file_size 可获得原文件或文件夹大小

compress_size 或获得压缩后的文件或文件夹大小

2. zip文件解压

利用 ZipFile 对象的 extractall() 方法可以对整个压缩包进行解压。extractall() 方法接受一个绝对路径名称字符串为可选参数,解压后的文件将会入在传入的目录中。示例代码如下:

>>> import zipfile, os

>>> os.chdir(‘C:\\’) # move to the folder with example.zip

>>> exampleZip = zipfile.ZipFile(‘example.zip’)

>>> exampleZip.extractall()

>>> exampleZip.close()

上例中,extractall() 方法没有被传入参数,因为文件被解压到当前的工作目录中。如果被传入的目录不存在,则Python将新建该目录。

也可以利用 ZipFile 对象的 extract() 方法对压缩包中的某个特定文件进行解压,extract() 方法的使用示例如下:

>> exampleZip.extract(‘spam.txt’)

‘C:\\spam.txt’

>>> exampleZip.extract(‘spam.txt’, ‘C:\\some\\new\\folders’)

‘C:\\some\\new\\folders\\spam.txt’

>>> exampleZip.close()

如上所示,当 extract() 方法可接收一个压缩包中的文件名作为参数,将其解压到当前目录中。也可以用一个绝对路径名称字符串作为该方法的第二个参数,将特定文件解压到该目录中,如果该目录不存在,Python程序将新建该目录。

3. 创建和增加文件到 ZIP 文件中

创建ZIP文件需要使用写模式,即将压缩包名称和写模式代号分别作为ZipFile方法的第一、第二个参数传入。示例代码如下:

>>> import zipfile

>>> newZip = zipfile.ZipFile(‘new.zip’, ‘w’)

>>> newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)

>>> newZip.close()

以上第二行代码新建了一个名为 new.zip 的压缩文件,并以写模式打开。第三行中用 ZipFile 对象的 write() 方法添加文件到压缩包中,该方法的第一个参数为需要添加进去的文件名,第二个参数为压缩算法,通常使用如上代码中的 ZIP_DEFLATED 即可。需要注意的是,类似于文件的写操作,如果目录中已存在同名的压缩文件,则原有文件将会被重写!如果需要继续添加文件到已有的压缩文件中,则在实例化 ZipFile 对象时,使用 ‘a’ 作为第二个参数即可。

python打开zip文件_Python ZIP 文件创建与读取相关推荐

  1. python打开gz文件_Python(Python2、Python3)读取gzip(.gz)文件中utf8(utf-8)编码字符串

    1.Python2中指定编码读取gzip文件import gzip fp = gzip.open('foo.gz') contents = fp.read() #contents是foo.gz的未压缩 ...

  2. python打开.mat文件_python怎么打开mat文件?

    在编程中,使用.mat文件可以连同数据的变量名一同保存下来,在程序调试的过程中十分方便,并且不需要控制数据的存储格式,matlab会自动保存并区分我们所存储的内容.那你知道如何使用python打开.m ...

  3. python打开dat文件_python中对文件的操作

    """ 在变量,序列(这里的序列其实就是元组,列表,字符串,集合,字典)和对象中存储的数据是暂时的,程序结束就会丢失. 为了能够长世界地保存程序中的数据,需要将程序中的数 ...

  4. python 打开word文件_python下载word文件-Python用python-docx读写word文档

    备注: doc是微软的专有的文件格式,docx是Microsoft Office2007之后版本使用,其基于Office Open XML标准的压缩文件格式,比 doc文件所占用空间更小.docx格式 ...

  5. python打开电脑文件_python办公自动化:自动打开word文档-docx文件怎样打开

    上节python办公自动化:python自动化word快速入门,对python自动化word的操作做了快速入门,从本小节开始,逐步细致的分解讲解每一个关键步骤. python自动化word 使用文档 ...

  6. python 打开targz文件_Python下使用pandas打开excel文件并进行处理

    单位有较多账户报表,经常要知道哪些账户的金额是多少. 最近python很火,感觉可以搞一下,但是0基础,自己摸索,著文以记之. 安装python.安装最新版,可以多活一段时间,什么都选择默认就好. 安 ...

  7. python打开json文件_python怎么读json文件

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  8. python打开音频文件_Python处理音频文件的实用姿势

    每天叫醒我的不是理想,是楼下广场舞的音乐. 音乐是人类的通用语言,不分国界不分种族. 抖音短视频爆火的关键因素之一,就是普通人也能便捷地使用BGM表达自我. 从感性角度看,音乐可以有很多种解释,如:音 ...

  9. python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值

    #!/usr/bin/env python #_*_encoding:utf-8 # 2018/05/29 #augustyang #2.0 ''' 解压文件,合并文件 打包成zip格式文件 生成MD ...

最新文章

  1. Stackoverflow 高赞答案,为什么牛逼的程序员都不用 “ ! = null ' 做判空
  2. Skywalking 结束孵化,成为 Apache 基金会顶级项目
  3. Spring原理之代理与动态代理模式总结(四)
  4. opengl es 实现旋转的三角形
  5. python 学习过程总结
  6. CF1041E Tree Reconstruction_构造_思维题
  7. Qt创建ui界面/界面关联类和LNK2001
  8. SuiteCRM Beans(model)
  9. 国产免费数据库建模工具EZDML3.24发布 支持生成和预览vue文件
  10. 人工智能神经网络概念股,神经网络芯片概念股
  11. C解决duplicate symbol
  12. python椭圆拟合_椭圆拟合(python)
  13. 创建一个最简单的win32应用程序
  14. L1-054 福到了 (15分)
  15. 一种TV端自动化测试应用OTA升级的方法
  16. 普通话考试易错字、鼻音、HF发声
  17. 指尖江湖鸿蒙抽奖,剑网3指尖江湖鸿蒙始清活动怎么玩
  18. OPEN3D学习笔记(三)——KDTree ICP Registration
  19. 以完整解决方案引领智慧转型,联想在深发布ThinkSystemThinkAgile双品牌新品
  20. 黄淮学院计算机类专业属于几本,黄淮学院是几本院校

热门文章

  1. 下载Docker Compose超时的问题(Fail connect to github-production-release-asset-2e65be.s3.amazonaws.com:443)
  2. 微信小程序开发笔记 进阶篇④——基于iconfont快速实现icon图标显示
  3. 安装Microsoft Visual Studio Installer Projects 2022
  4. Avoid object allocations during draw/layout operations
  5. 一花一树一城,走进三维重建的绚丽世界|专访权龙
  6. 自定义异常:运行时期和编译时期的区别
  7. 【USB网络摄像头】基于mjpeg-streamer的视频采集与播放【QT上位机软件】
  8. ubuntu 软件包管理
  9. MySQL学习路线指南
  10. 英伟达GTX 960M安装anaconda、cuda+cudnn