Python 库手册:zipfile 文件压缩模块
zipfile 是 Python 自带的标准库模块,用于创建、读取、写入和解压 ZIP 格式的压缩文件。它为开发者提供了操作 .zip 文件的便捷方式,无需借助外部解压软件或第三方库。
应用场景包括:
(1)打包多个文件或目录为一个 ZIP 文件。
(2)解压 ZIP 文件中的全部或部分内容。
(3)遍历压缩包内容,列出文件名、压缩比等信息。
(4)自动化数据归档、备份或传输处理。
◆ ◆ ◆
核心概念
1、zipfile.ZipFile 是操作 ZIP 文件的核心类,支持读取、写入和追加模式。
2、ZIP 格式是一种基于无损压缩的归档格式,可存储多个文件和子目录。
3、ZIP 文件内部可包含路径结构,但所有信息都存在于单个 .zip 文件中。
4、操作 ZIP 文件时建议使用 with 上下文管理,确保资源正确关闭。
5、zipfile 也支持读取压缩包中文件的字节内容和信息,但不支持修改压缩包中已有的文件(只能重新写一个新的)。
◆ ◆ ◆
应用举例
例 1:将多个文件打包为 ZIP 文件
import zipfile
# 创建一个新的 zip 文件with zipfile.ZipFile("archive.zip", mode="w") as zipf: zipf.write("file1.txt") # 添加文件1 zipf.write("file2.txt") # 添加文件2
例 2:读取 ZIP 文件内容列表
import zipfile
with zipfile.ZipFile("archive.zip", mode="r") as zipf: print(zipf.namelist()) # 输出压缩包中的所有文件名
例 3:解压所有文件到指定目录
import zipfile
with zipfile.ZipFile("archive.zip", mode="r") as zipf: zipf.extractall(path="output") # 解压到 output 目录
例 4:提取单个文件并读取内容
import zipfile
with zipfile.ZipFile("archive.zip", mode="r") as zipf: data = zipf.read("file1.txt") # 返回的是 bytes print(data.decode("utf-8")) # 解码为字符串
◆ ◆ ◆
常用函数速览
zipfile.ZipFile(filename, mode="r")
创建一个 ZipFile 对象(用于读/写/追加 ZIP 文件)。
参数:
filename:ZIP 文件名或类文件对象
mode:打开模式,常用为 "r"(读取)、"w"(新建)、"a"(追加)
返回:ZipFile 对象
zipfile.write(filename, arcname=None)
将文件添加进 ZIP 压缩包。
参数:
filename:要添加的本地文件路径
arcname:压缩包中显示的文件名或路径(默认为原文件名)
返回:无
zipfile.writestr(name, data)
将字符串或字节数据直接写入压缩包中(不依赖外部文件)。
参数:
name:压缩包内的文件名
data:要写入的字节或字符串内容(推荐使用 bytes)
返回:无
zipfile.extract(member, path=None)
将某个文件从 ZIP 包中解压到指定路径。
参数:
member:压缩包内的文件名
path:可选,目标文件夹(默认当前目录)
返回:解压后的文件路径
zipfile.extractall(path=None, members=None)
将 ZIP 包中的所有文件解压出来。
参数:
path:目标文件夹(默认当前目录)
members:要解压的文件列表(默认解压全部)
返回:无
zipfile.namelist()
返回压缩包中所有文件的名称(字符串列表)。
参数:无
返回:字符串列表
zipfile.read(name)
读取 ZIP 内部文件的字节内容。
参数:name 为压缩包内文件名
返回:字节数据(bytes 类型)
zipfile.infolist()
返回压缩包中每个文件的详细信息列表(ZipInfo 对象)。
参数:无
返回:包含 ZipInfo 对象的列表
zipfile.testzip()
测试 ZIP 文件中的数据是否完整。校验文件头和部分数据的 CRC。
参数:无
返回:若无错误,返回 None;否则,返回第一个出错文件的文件名字符串
◆ ◆ ◆
补充说明
1、ZIP 文件中的目录层级会根据写入时的路径结构自动构建。
2、写模式 "w" 会覆盖已有压缩文件,请谨慎使用。
3、若需支持密码保护 ZIP 文件或解压大文件,推荐使用第三方库如 pyzipper、zipfile36 等。

“点赞有美意,赞赏是鼓励”
更多推荐



所有评论(0)