这是我参与8月更文挑战的第7天,活动详情查看: 8月更文挑战
回顾复习
我们上一次学习了Python文件目录高级操作-shutil模块。在shutil模块中,不仅提供提供了对文件/目录进行拷贝、移动、删除操作,还提供了对文件进行归档、压缩和解压缩的方法。
我们在学习之前,先来学习在shutil模块下比较混淆的地方
⭐疑问一:归档、压缩等名词傻傻分不清?
-
归档:也称为打包。
(1)方式:将多个文件合并到一个文件当中
(2)特点:归档文件没有经过压缩,它占用的空间是所有文件和目录的总和
-
解包:
(1)方式:将文件/目录集合(归档)的文件进行释放。 (2)特点:与归档操作是逆向的
-
压缩:
(1)方式:压缩时将多个文件进行有损或者无损的合并到一个文件当中。
(2)特点:压缩文件采用了不同的存储方式,它占用的空间比所有文件或者目录总和要小
-
解压缩:
(1)方式:将压缩文件中的多个文件,释放出来。
(2)特点:是压缩的反向操作
🌈疑问二:Python对于归档压缩和解压缩提供了多少个模块?
本次,我们主要学习Python内置的zipfile模块常用的方法,实现对文件压缩和解压缩的操作方法,废话不多说,带上耳机🎧、播放音乐🎼,开始今天的学习之旅💃💃💃~
1. zipfile模块常用方法
zipfile模块用于文件的压缩操作,提供类(标新)和常用的方法如下:
方法 | 作用 |
---|---|
⭐ zipfile.ZipFile | ZIP文件的读写操作 |
⭐ zipfile.PyZipFile | 创建包含Python库的ZIP归档文件 |
⭐ zipfile.ZipInfo | 归档文件中的一个成员信息 |
zipfile.is_zipfile() | 判断filename是否是有效的ZIP文件,并返回一个布尔类型的值 |
zipfile.ZIP_STORED | 表示一个压缩的归档成员 |
zipfile.ZIP_DEFLATED | 表示普通的ZIP压缩方法,需Zlib模块支持 |
zipfile.ZIP_BZIP2 | 表示BZIP2压缩方法,需bz2模块支持 |
zipfile.ZIP_LZMA | 表示LZMA压缩方法,需lzma模块支持 |
📣 重要说明:
-
zipfile.ZipFile类:常用于创建、打开zip文件对象
(1) 可以与上下文管理器with进行使用
(2)zipfile.ZipFile类对象提供的方法有:write(),read(),close(),extract()等方法
标题 作用 getinfo (filename) 返回一个ZipInfo对象 infolist() 返回包含每个压缩文件的ZipInfo namelist() 返回按文件名称排序的压缩文件列表 open(filename) 以二进制文件类的形式访问一个归档文件,可与上下文管理器一起使用 write(filename,arcname) 将文件写入压缩文件里 read(filename) 返回压缩文件的字节数据 printdir() 将压缩文件里的目录打印到sys.stdout extract() 将单个压缩文件进行解压 extractall() 将多个压缩文件进行解压 -
zipfile.PyZipFile:创建包含Python库的ZIP归档文件
(1)PyZipFile构造方法与ZipFile构造方法参数相似,多了一个optimize参数
(2)PyZipFile实例方法比ZipFile多了一个writepy()方法
-
zipfile.ZipInfo:归档文件中的一个成员信息
(1)通过ZipFile实例对象调用getinfoll来获取ZipInfo实例对象
(2)归档文件中成员的如filename、date_time、compress_type等信息方法
2. zipfile模块压缩操作
📚压缩实现步骤:
-
创建压缩文件:zp = zipfile.ZipFile()
-
在zip文件中添加内容:zp.write(filename, arcname) 只能对文件进行添加,如果添加的是文件夹,则压缩结果是一个空的文件夹
-
关闭压缩文件:zp.close()
import zipfile
z = zipfile.ZipFile("test.zip","w")
z.write('test1.txt')
z.write(r'./New/New10_test.txt')
z.write(r'./old/old6_test/test.txt')
z.close()
print(z.printdir())
3. zipfile模块解压操作
📗📘📙解压:
-
创建ZipFile实例,打开zip文件:zp = zipfile.ZipFile(zip_path, 'r')
-
解压文件操作:
(1)指定其中的某个单个文件:zp.extract(member, path)
(2)解压全部文件:zp.extractall(path)
-
关闭文件:zp.close()
z = zipfile.ZipFile("test.zip","r")
z.extract('test1.txt','./zip')
z.extractall('./zip3')
总结
本期,我们对归档、压缩等概念,以及目前Python对文件目录进行压缩和解压的模块全面的知悉。
同时,针对zipfile模块提供的类及方法,进行学习和掌握,方便在我们日常工作中进行使用
以上是本期内容,欢迎各位大佬点赞评论,下次见~