在数字化时代,随着数据量的不断增长,文件存储与传输面临着空间和效率的双重挑战。无论是处理大量的日志文件、备份数据,还是通过网络发送大型文件,文件压缩都成为了优化存储与传输的重要手段。Python 凭借其强大的标准库和丰富的第三方库,能够轻松实现文件的压缩与解压操作。小编就详细了解 Python 中文件压缩与解压的具体操作步骤。
一、使用zipfile库进行 ZIP 格式文件压缩与解压
zipfile是 Python 标准库中用于处理 ZIP 格式文件的模块,ZIP 格式是一种常见且广泛支持的文件压缩格式,具有跨平台性强的特点。
(一)文件压缩
导入模块:在 Python 代码中,首先导入zipfile模块:
TypeScript取消自动换行复制
import zipfile创建压缩文件并添加内容:使用ZipFile类创建一个 ZIP 压缩文件对象,并通过write方法将文件添加到压缩包中。例如,将当前目录下的file1.txt和file2.txt两个文件压缩成archive.zip:
TypeScript取消自动换行复制
with zipfile.ZipFile('archive.zip', 'w') as zipf:
zipf.write('file1.txt')
zipf.write('file2.txt')上述代码中,'w'表示以写入模式打开压缩文件,如果文件已存在则会覆盖。如果希望以追加模式添加文件,可以使用'a'。此外,ZipFile类还支持设置压缩方式,例如使用zipfile.ZIP_DEFLATED进行更高效的压缩:
TypeScript取消自动换行复制
with zipfile.ZipFile('archive.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
zipf.write('file1.txt')
zipf.write('file2.txt')压缩文件夹:如果要压缩整个文件夹,可以通过递归遍历文件夹内的所有文件来实现。以下是一个示例函数:
TypeScript取消自动换行复制
import os
def zip_folder(folder_path, zip_name):
with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
zipf.write(file_path)
zip_folder('my_folder','my_folder.zip')该函数会遍历指定文件夹及其子文件夹下的所有文件,并将它们添加到压缩包中。
(二)文件解压
解压单个文件:使用extract方法可以将压缩包中的单个文件解压到指定目录。例如,将archive.zip中的file1.txt解压到extracted_files目录:
TypeScript取消自动换行复制
with zipfile.ZipFile('archive.zip', 'r') as zipf:
zipf.extract('file1.txt', 'extracted_files')解压全部文件:如果要解压压缩包中的所有文件,可以使用extractall方法:
TypeScript取消自动换行复制
with zipfile.ZipFile('archive.zip', 'r') as zipf:
zipf.extractall('extracted_files')上述代码会将archive.zip中的所有文件解压到extracted_files目录下。
二、使用tarfile库进行 TAR 格式文件压缩与解压
TAR 格式也是一种常用的文件归档格式,常与 Gzip、Bzip2 等压缩算法结合使用,形成.tar.gz(TGZ)、.tar.bz2等压缩文件格式。
(一)文件压缩
导入模块:导入tarfile模块:
TypeScript取消自动换行复制
import tarfile创建 TAR 压缩文件:创建.tar格式的压缩文件,例如将file1.txt和file2.txt打包成archive.tar:
TypeScript取消自动换行复制
with tarfile.open('archive.tar', 'w') as tar:
tar.add('file1.txt')
tar.add('file2.txt')创建.tar.gz格式压缩文件:如果要创建.tar.gz格式的压缩文件,只需将打开模式改为'w:gz':
TypeScript取消自动换行复制
with tarfile.open('archive.tar.gz', 'w:gz') as tar:
tar.add('file1.txt')
tar.add('file2.txt')创建.tar.bz2格式压缩文件:同理,创建.tar.bz2格式的压缩文件,打开模式使用'w:bz2':
TypeScript取消自动换行复制
with tarfile.open('archive.tar.bz2', 'w:bz2') as tar:
tar.add('file1.txt')
tar.add('file2.txt')(二)文件解压
解压.tar文件:使用extractall方法解压.tar文件,例如将archive.tar解压到extracted_tar_files目录:
TypeScript取消自动换行复制
with tarfile.open('archive.tar', 'r') as tar:
tar.extractall('extracted_tar_files')解压.tar.gz和.tar.bz2文件:对于.tar.gz和.tar.bz2文件,解压方式类似:
TypeScript取消自动换行复制
# 解压.tar.gz文件
with tarfile.open('archive.tar.gz', 'r:gz') as tar:
tar.extractall('extracted_tar_gz_files')
# 解压.tar.bz2文件
with tarfile.open('archive.tar.bz2', 'r:bz2') as tar:
tar.extractall('extracted_tar_bz2_files')Python 通过zipfile和tarfile等库,为文件的压缩与解压提供了便捷、高效的解决方案。无论是处理 ZIP 格式还是 TAR 格式的文件,开发者都能根据实际需求,灵活运用这些工具,优化数据存储和传输的流程,提升工作效率。掌握这些文件压缩与解压的操作方法,是 Python 开发者在处理文件相关任务时不可或缺的技能。