Python 标准库实战:使用 zipfile 和 tarfile 管理压缩包

雨后青山
雨后青山
发布时间:2026-10-14| 3人浏览过
原创

本文详细介绍如何利用 Python 内置的 zipfile 和 tarfile 标准库处理压缩包。无需安装第三方软件,即可实现 zip 和 tar 格式文件的读取、列表获取、单文件及批量解压,以及创建包含不同压缩算法(如 gzip、bzip2)的压缩包。内容涵盖核心类 ZipFile 和 TarFile 的使用方法及代码示例,帮助开发者高效管理文件归档。

Python 处理压缩包概述

前言

压缩包是互联网软件发布的常见格式,也是系统管理中不可或缺的工具。在需要向他人发送多个文件,或为了节省磁盘空间进行数据备份时,使用压缩包形式存储和传输数据是最佳实践。

Python 提供了丰富的标准库来处理压缩包,功能涵盖创建、解压以及获取文件列表等。本文将深入讲解与压缩包处理相关的 Python 标准库使用方法。

管理 zip 格式压缩包

在 Windows 环境中,用户通常使用 zip 格式进行压缩;而在 Linux 系统中,则更常使用 gzip 或 bzip2。本节将重点介绍如何在 Python 中管理 zip 格式的压缩包。

管理 zip 格式压缩包

1. 读取 zip 文件

Python 主要通过 zipfile 模块来管理 zip 文件。该模块提供了一个名为 ZipFile 的类,通过将 zip 文件名传递给该类,可以打开压缩包并获取 ZipFile 对象。随后,利用该对象的方法即可读取压缩包内容。具体实现如下:


>>> import zipfile
>>> first_zip = zipfile.ZipFile('test.zip')
>>> first_zip.namelist()

namelist() 是 ZipFile 类中的常用方法。此外,extract 和 extractall 也是较为常用的方法,具体功能如下:

  • namelist:返回一个列表,包含 zip 文件中所有的文件和文件夹名称;
  • extract:从 zip 压缩包中提取单个指定文件;
  • extractall:从 zip 压缩包中提取所有文件到当前目录。

2. 创建 zip 文件

与读写普通文件类似,创建 zip 格式的压缩文件需要以“写”模式打开 zip 文件。需要注意的是,ZipFile 对象通过 write 方法来添加文件。具体代码示例如下:


>>> import zipfile
>>> my_zip = zipfile.ZipFile('test.zip', 'w')
>>> my_zip.write('test.py')
>>> my_zip.close()

上述代码创建了一个名为 test.zip 的新 zip 文件,并将 test.py 文件压缩后添加其中。

管理 tar 格式压缩包

管理 tar 格式压缩包

tar 命令通常在 Linux 系统中用于创建压缩包,并允许指定压缩算法。此外,tar 命令还可以创建未压缩的 tar 包,仅用于将多个文件打包以便传输。因此,使用 tar 命令时,既可以创建普通的 tar 包,也可以创建经过压缩算法处理后的压缩包。

Python 中的 tarfile 标准库提供了与 Linux tar 命令类似的功能,支持创建压缩或非压缩的 tar 包。Python 的简洁优雅在此处体现得淋漓尽致,tarfile 模块的使用体验比 Linux 下的 tar 命令更为便捷舒适。

1. 读取 tar 包

读取 tar 包的操作与 Python 中的文件管理类似。读写压缩包需要执行打开操作,指定打开模式,并在操作完成后关闭文件。为了简化资源管理,建议使用上下文管理器来确保文件正确关闭。具体实现如下:


>>> import tarfile
>>> with tarfile.open('etc.tar') as t:
...  for member in t.getmembers():
...     print(member.name)

上述代码导入了 tarfile 库,并使用默认读模式打开 tar 包。tarfile.open() 函数返回一个 TarFile 对象,该对象代表当前打开的 tar 包。通过该对象的方法,可以操作和读取 tar 包中的内容。

tarfile 模块包含多个函数,其中最常用的有 getnames、extract 和 extractall:

  • getnames:获取 tar 包中的文件列表;
  • extract:提取单个文件;
  • extractall:提取所有文件。

2. 创建 tar 包

从上述示例可以看出,读取 tar 包与读取普通文件类似,均以“读”模式打开文件并获取对象,然后通过对象方法进行操作。同样,创建 tar 包与写入普通文件也较为相似。具体实现如下:


>>> import tarfile
>>> with tarfile.open('etc.tar', mode='w') as f:
...   f.add('test.py')

上述代码中,由于目的是创建 tar 包,因此以“写”模式打开 tar 包并获取 TarFile 对象,随后使用 TarFile 对象的 add 方法将 test.py 文件添加到 tar 包中。

3. 使用 tarfile 读取和创建压缩包

前文介绍了使用 tarfile 创建和读取未压缩的 tar 包。但在实际应用中,创建 tar 包时通常使用压缩算法,以加快传输速度并减少磁盘空间占用。

使用 tarfile 创建和读取压缩包的步骤非常简单,只需在打开文件时指定压缩算法即可。对于 tarfile 的 open 函数,采用“打开模式:压缩算法”的形式打开文件。具体示例如下:

a. 读取使用 gzip 算法压缩的 tar 包:


>>> import tarfile
>>> with tarfile.open('etc.tar', mode='r:gz') as f:

b. 创建使用 bzip2 算法压缩的 tar 包:


>>> import tarfile
>>> with tarfile.open('etc.tar', mode='w:bz2') as f:

以上就是利用 Python 标准库操作压缩包的详细内容,更多关于 Python 压缩包处理的资料,敬请关注本站其他相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。