当前位置: 首页 > 开发者资讯

Python怎么实现文件压缩?Python 文件压缩与解压操作步骤

  在数字化时代,随着数据量的不断增长,文件存储与传输面临着空间和效率的双重挑战。无论是处理大量的日志文件、备份数据,还是通过网络发送大型文件,文件压缩都成为了优化存储与传输的重要手段。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')该函数会遍历指定文件夹及其子文件夹下的所有文件,并将它们添加到压缩包中。

a41eaab03e4c7c9793890141750fd2ed.jpg

  (二)文件解压

  解压单个文件:使用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 开发者在处理文件相关任务时不可或缺的技能。

 


猜你喜欢