如何使用Python的ZIPFILE模块压缩文件
压缩文件是常见的文件处理操作之一,在Python中,使用ZIPFILE模块可以轻松实现文件压缩的功能。本文将介绍如何使用Python的ZIPFILE模块来压缩文件。
更多Python文章,请阅读:Python 教程
ZIPFILE模块简介
ZIPFILE是Python标准库中的一个模块,用来读写ZIP格式的归档文件。它提供了一些方便的API,可以对ZIP文件进行压缩、解压、添加、删除等操作。
ZIPFILE模块的基本使用
压缩文件
下面是一个简单的示例,演示如何使用ZIPFILE模块来压缩文件:
import zipfile
# 创建一个 ZIP 文件
with zipfile.ZipFile('example.zip', 'w') as myzip:
# 往 ZIP 文件中写入一个文件
myzip.write('example.txt')
这段代码将创建一个名为example.zip的ZIP文件,并将当前目录中的example.txt文件写入到ZIP文件中。代码中使用了with语句来自动关闭文件句柄。
解压文件
下面是一个示例,演示如何使用ZIPFILE模块来解压文件:
import zipfile
# 解压 ZIP 文件
with zipfile.ZipFile('example.zip', 'r') as myzip:
# 解压 ZIP 文件中的一个文件到当前工作目录
myzip.extract('example.txt')
这段代码将加载名为example.zip的ZIP文件,并将其中的example.txt文件解压到当前工作目录中。
添加文件
下面是一个示例,演示如何向ZIP文件中添加文件:
import zipfile
# 打开 ZIP 文件以进行编辑
with zipfile.ZipFile('example.zip', 'a') as myzip:
# 添加一个新文件到 ZIP 文件中
myzip.write('new.txt')
这段代码将打开名为example.zip的ZIP文件以进行编辑,并向其中添加名为new.txt的新文件。
删除文件
下面是一个示例,演示如何从ZIP文件中删除文件:
import zipfile
# 打开 ZIP 文件以进行编辑
with zipfile.ZipFile('example.zip', 'a') as myzip:
# 删除 ZIP 文件中的一个文件
myzip.remove('new.txt')
这段代码将打开名为example.zip的ZIP文件以进行编辑,并从其中删除名为new.txt的文件。
获取文件列表
下面是一个示例,演示如何获取ZIP文件中的文件列表:
import zipfile
# 打开 ZIP 文件以读取内容
with zipfile.ZipFile('example.zip', 'r') as myzip:
# 获取 ZIP 文件中的文件列表
file_list = myzip.namelist()
print(file_list)
这段代码将打开名为example.zip的ZIP文件以读取其内容,并获取其中的文件列表。文件列表以一个字符串列表的形式返回。
ZIPFILE模块的进阶使用
压缩目录
ZIPFILE模块不仅可以压缩单个文件,还可以压缩整个目录。下面是一个示例,演示如何压缩整个目录:
import zipfile
import os
def zipdir(dirname, zipfilename):
# 创建 ZIP 文件
with zipfile.ZipFile(zipfilename, 'w') as myzip:
# 遍历目录中的所有文件
for root, dirs, files in os.walk(dirname):
for file in files:
# 将文件添加到 ZIP 文件中
myzip.write(os.path.join(root, file))
# 压缩当前工作目录
zipdir('.', 'example.zip')
这段代码将遍历当前工作目录中的所有文件,并将它们压缩到名为example.zip的ZIP文件中。在遍历目录时,代码使用了os.walk函数来遍历目录树。
加密 ZIP 文件
ZIPFILE模块支持加密ZIP文件,以保护文件内容的安全。下面是一个示例,演示如何加密ZIP文件:
import zipfile
# 创建一个加密的 ZIP 文件
with zipfile.ZipFile('example.zip', 'w', zipfile.ZIP_DEFLATED) as myzip:
# 将文件添加到 ZIP 文件中
myzip.write('example.txt')
# 设置密码
myzip.setpassword(b'secret')
这段代码将创建一个名为example.zip的ZIP文件,并将其中的example.txt文件写入到ZIP文件中。代码使用了setpassword函数来设置ZIP文件的密码,密码用字节数组形式传递。
解压加密文件
如果需要解压加密的ZIP文件,需要提供密码,下面是一个示例,演示如何解压加密的ZIP文件:
import zipfile
# 解压加密的 ZIP 文件
with zipfile.ZipFile('example.zip', 'r') as myzip:
# 设置密码并解压 ZIP 文件中的一个文件到当前工作目录
myzip.extract('example.txt', pwd=b'secret')
这段代码将加载名为example.zip的加密ZIP文件,并将其中的example.txt文件解压到当前工作目录中。代码使用了extract函数来解压文件,同时传递了ZIP文件的密码。
结论
本文介绍了Python中ZIPFILE模块的基本使用和进阶用法。使用这些API,我们可以方便地进行ZIP文件的压缩、解压、添加、删除等操作。同时,我们还学习了如何加密ZIP文件以及如何解压加密的ZIP文件。了解这些技巧,可以帮助我们更好地处理ZIP文件。