(点击上方快速关注并设置为星标,一起学Python)

来源:网络

大家可能都熟悉.zip格式的文件。它可以把多个文件,压缩成一个文件。这在网络上传输时很有用,而且节省硬盘空间。

接下来,我们使用Python实现压缩和解压。

1、读取ZIP文件信息


要读取ZIP文件的内容,首先必须创建一个ZipFile对象。ZipFile对象在概念上与File对象相似。

要创建一个 ZipFile 对象,就调用 zipfile.ZipFile()函数,向它传入一个字符串,表示.zip 文件的文件名。请注意,zipfile 是 Python 模块的名称,ZipFile()是函数的名称。

import zipfile# 传入压缩文件zfile.zip获取相关信息zip_file = zipfile.ZipFile('zfile.zip')# 获取压缩文件中的内容f_content = zip_file.namelist()# 压缩前的大小f_size = zip_file.getinfo('zfile/a.txt').file_size# 压缩后的大小c_size = zip_file.getinfo('zfile/a.txt').compress_size

ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹 的字符串的列表。这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关 于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size 和 compress_size,它们分别表示原来文件大小和压缩后文件大小。ZipFile 对象表示 整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。

2、从 ZIP 文件中解压缩


ZipFile 对象的 extractall()方法从 ZIP 文件中解压缩所有文件和文件夹,放到当 前工作目录中。

import zipfilezip_file = zipfile.ZipFile('zfile.zip')# 解压zip_extract = zip_file.extractall()zip_extract.close()
运行这段代码后, example.zip 的内容将被解压缩到 C:\。或者, 你可以向 extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作 目录。如果传递给 extractall()方法的文件夹不存在,它会被创建。例如,如果你用 exampleZip.extractall('C:\ delicious')取代处的调用,代码就会从 example.zip 中解压 缩文件,放到新创建的 C:\delicious 文件夹中。ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。

3、创建和添加到 ZIP 文件


要创建你自己的压缩 ZIP 文件,必须以“写模式”打开 ZipFile 对象,即传入'w' 作为第二个参数(这类似于向 open()函数传入'w',以写模式打开一个文本文件)。

如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指 的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添 加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压 缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩 算法,它对各种类型的数据都很有效)。

import zipfilezip_file = zipfile.ZipFile('new.zip','w')# 把zfile整个目录下所有内容,压缩为new.zip文件zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)# 把c.txt文件压缩成一个压缩文件# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)zip_file.close()

这段代码将创建一个新的 ZIP 文件,名为 new.zip,它包含 spam.txt 压缩后的内容。要记住,就像写入文件一样,写模式将擦除 ZIP 文件中所有原有的内容。如果 只是希望将文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()传入'a'作为第二 个参数,以追加模式打开 ZIP 文件。

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

点「在看」的人都变好看了哦

c++创建文件_使用Python实现文件压缩和解压相关推荐

  1. python解压文件_使用Python实现文件压缩和解压

    大家可能都熟悉.zip格式的文件.它可以把多个文件,压缩成一个文件.这在网络上传输时很有用,而且节省硬盘空间. 接下来,我们使用Python实现压缩和解压. 读取ZIP文件信息 要读取ZIP文件的内容 ...

  2. Qt-qrc资源文件-rcc打包-程序调用-ZIP压缩和解压-安装程序制作参考

    文章目录 1.qrc文件编辑 2.将qrc文件转位rcc 3.资源使用 4.ZIP压缩和解压 4.1.解压 4.2.压缩 5.错误 6.作者答疑 将程序的资源文件打包在程序的应用程序内,能够使程序保持 ...

  3. python读压缩文件内容_使用Python读写及压缩和解压缩文件的示例

    读写文件 首先看一个例子: f = open('thefile.txt','w') #以写方式打开, try: f.write('wokao') finally: f.close() 文件的打开方式: ...

  4. python os复制文件_用Python复制文件的九种方法

    以下是演示"如何在Python中复制文件"的九种方法. shutil copyfile()方法 shutil copy()方法 shutil copyfileobj()方法 shu ...

  5. python通过内置的什么函数打开一个文件_利用python进行文件操作

    这篇文章主要介绍了如何利用python进行文件操作,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 什么是文件 文件是系统存储区域的一个命名位置,用来存储一些信息,便于后续访问.能够在非 ...

  6. 执行python命令和脚本文件_执行python脚本文件的方法

    执行python脚本文件的方法 发布时间:2020-09-03 10:17:11 来源:亿速云 阅读:60 作者:小新 小编给大家分享一下执行python脚本文件的方法,相信大部分人都还不怎么了解,因 ...

  7. python 目录下的文件_用python把文件夹下的所有文件包括文件夹里面的文件都拷贝到同一个目录下...

    比如1文件夹下有2文件夹,2文件夹下有1.txt文件和3文件夹,3文件夹下有2.txt3.txt现在要把1.txt2.txt3.txt全都拷贝到1文件夹下importosimportshutildef ...

  8. python 文件夹下所有文件_使用Python遍历文件夹下所有文件(包所有含子文件夹)...

    我二话不说先贴为敬 def getFile(path,format): print(path) files = os.listdir(path) # 得到文件夹下的所有文件,包含文件夹名称 FileL ...

  9. python加密文件_用 Python 加密文件

    生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...

最新文章

  1. java实时获取android网速_获取Android网速的另一种方法
  2. 三天打入CV大赛决赛圈!我是如何做到的?
  3. 多任务版udp聊天器
  4. VC++软件工程师高端培训
  5. ebm风扇选型手册_德国EBM离心风扇的八大结构组成你知道吗?
  6. Sql中对大数据量的判断
  7. 视觉位姿测量精度的影响因素分析(Camera Pose Estimation)
  8. Java虚拟机(二)——垃圾回收与内存分配
  9. javaScript 中创建json/转换字符串为json
  10. INSPINIA ADMIN 开发框架
  11. 高数教材班复习Hint(3.1-3.6)
  12. ThreeJS的性能优化方面
  13. 苏宁易购为京东量身打造北京攻略
  14. GMM-HMM 详解
  15. SGLTE中语音呼叫
  16. 介绍 GBase 8c产品架构
  17. unity手游之聊天SDK集成与使用一
  18. matlab 进行非线性回归,5.利用Matlab编程进行非线性回归分析.doc
  19. 解决Please make sure you have the correct access rights and the repository exists 问题
  20. 盘丝洞服务器维护,梦幻西游:明日维护公告解读!盘丝法宝调整,新增人物志玩法!...

热门文章

  1. 厉害了,Spring中bean的12种定义方法!
  2. 程序员专属精品简历合集—面试必备
  3. 逻辑性最强的React Native环境搭建与调试
  4. Spark集群完全分布式安装部署
  5. [SCOI2009]生日礼物 单调性尺取法
  6. 华为手机鸿蒙系统怎么样_华为自研操作系统“鸿蒙”已用于华为手机
  7. 电脑开机显示服务器启动失败是什么原因,请问我的电脑在启动时显示NTDETECT失败是什么意思? 爱问知识人...
  8. 用户信息填写web代码_Web前端常见问题汇总
  9. java 且_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
  10. echarts symbol 回调函数_【OpenLayer 实战】实现仿Echarts风格的动态迁徙图/航班图