共计 1432 个字符,预计需要花费 4 分钟才能阅读完成。
在处理大量数据时,文件压缩是节省存储空间和便于传输的常见做法。Python 的 shutil 模块提供了便捷的文件压缩和解压缩方法,支持多种压缩格式,如 zip 和 tar。本节我们将学习如何使用 Python 来进行文件的压缩与解压操作。
- 压缩文件(zip 格式)
shutil.make_archive()方法可以将指定文件夹压缩为zip格式。
import shutil
# 压缩文件夹为 zip 格式
shutil.make_archive("backup", "zip", "folder_to_compress")
shutil.make_archive() 的参数解释:
- 第一个参数:目标压缩文件的路径(不带扩展名)。
- 第二个参数:压缩格式(如
zip,tar)。 - 第三个参数:要压缩的文件夹路径。
- 压缩文件为 tar 格式
除了zip格式,还可以将文件压缩为tar格式,常用于 Linux 系统。
shutil.make_archive("backup", "tar", "folder_to_compress")
此方法可以创建 .tar 或 .tar.gz 格式的压缩文件。
- 解压文件(zip 格式)
使用shutil.unpack_archive()方法来解压.zip文件。
import shutil
# 解压 zip 文件
shutil.unpack_archive("backup.zip", "extracted_folder")
unpack_archive() 的参数解释:
- 第一个参数:待解压的压缩文件路径。
- 第二个参数:解压后的目标文件夹路径。
- 解压 tar 文件
解压.tar或.tar.gz文件同样使用unpack_archive()方法:
shutil.unpack_archive("backup.tar", "extracted_folder")
shutil.unpack_archive("backup.tar.gz", "extracted_folder")
unpack_archive() 会根据文件的扩展名自动选择解压方式。
- 解压指定文件格式
unpack_archive()也支持指定格式,例如zip或tar。
shutil.unpack_archive("backup.zip", "extracted_folder", "zip")
- 通过 zipfile 模块进行更细粒度的操作
shutil模块提供了简单的压缩和解压功能,但如果需要更精细的操作,比如密码保护的 zip 文件,我们可以使用zipfile模块。
import zipfile
# 创建 zip 文件
with zipfile.ZipFile("backup.zip", "w") as zipf:
zipf.write("file1.txt")
zipf.write("file2.txt")
# 解压 zip 文件
with zipfile.ZipFile("backup.zip", "r") as zipf:
zipf.extractall("extracted_folder")
在这个例子中,zipfile 模块让我们可以更细致地控制压缩与解压过程,甚至支持添加密码等特性。
总结:
本节学习了如何使用 shutil 和 zipfile 模块进行文件的压缩与解压操作。通过这些方法,我们能够方便地管理和传输大量文件,特别是在备份和存档过程中非常有用。
练习与思考:
- 编写一个程序,将某个文件夹下的所有
.txt文件压缩为.zip文件。 - 解压一个
.tar.gz文件,并打印出解压后的文件列表。 - 使用
zipfile模块创建一个压缩包,并逐个添加文件。
正文完