如何使用 Python 创建 Zip 文件?

2025年1月5日 | 阅读 4 分钟

Python Zip 文件创建在文件压缩、归档和文件管理方面非常普遍。您可以使用 Python 的内置 `zipfile` 模块轻松创建、修改和解压 Zip 文件。本教程将向您展示如何使用 Python 创建 Zip 文件,包括所有基本步骤和示例,以帮助您一路前行。

1. 导入所需模块

在创建 Zip 文件之前,我们需要导入 `zipfile` 模块,它是 Python 标准库的一部分。该模块提供了用于创建、读取、写入和解压 Zip 文件的类和方法。

代码

2. 创建 Zip 文件

为了创建 Zip 文件,我们首先需要创建一个 `ZipFile` 对象。此对象代表我们要创建的 Zip 文件。我们将指定 Zip 文件的名称以及我们要使用的模式。模式可以设置为“a”以添加到现有 Zip 文件,或设置为“w”以写入,这将创建一个新的 Zip 文件或覆盖现有文件。

代码

3. 将文件添加到 Zip 文件

一旦创建了 `ZipFile` 对象,我们就可以使用 `write()` 方法将文件添加到其中。此方法需要两个参数:要添加到 Zip 文件中的文件名,以及可选的 `arcname` 参数,它指定了文件在 Zip 文件中保存的名称。如果未提供 `arcname`,则文件将以其原始名称存储。

代码

在上面的示例中,`jtpfile1.txt` 和 `jtpfile2.txt` 被添加到 Zip 文件中。第二个文件将存储在 Zip 文件内的 `data` 目录中。

4. 将目录添加到 Zip 文件

我们可以使用 `write()` 方法并带有目录路径和 `arcname` 参数来将整个目录添加到 Zip 文件中。默认情况下,此方法会将指定目录内的所有文件和子目录添加到 Zip 文件中。

代码

此示例将整个目录添加到 Zip 文件中的 `data` 目录下。

5. 关闭 Zip 文件

完成将文件和目录添加到 Zip 文件后,我们必须使用 `close()` 方法关闭 `ZipFile` 对象。这确保 Zip 文件被正确关闭,并且所有更改都已保存。

代码

完整示例

这是一个完整的示例,演示如何创建包含多个文件和目录的 Zip 文件

代码

输出

 
Zip file created successfully.   

它显示了 Zip 文件(`example.zip`)已成功创建,其中包含目录(`data`)及其内容,以及指定的文件(`file1.txt` 和 `file2.txt`)。

处理异常

在处理文件和文件夹时,优雅地处理潜在的故障至关重要。在创建 Zip 文件时可能会出现文件丢失或权限不足等问题。我们可以使用 `try` 和 `except` 块来处理这些异常。

代码

输出

 
Zip file created successfully.   

在此示例中,我们尝试创建一个 Zip 文件并向其中添加文件。如果找不到任何指定的文件或存在权限问题,则会显示相应的错误消息。如果没有发生异常,则显示成功消息。

递归地从目录添加文件

有时可能需要递归地将目录中的所有文件和子目录添加到 Zip 文件中。`write()` 方法通过将 `recursive` 参数设置为 `True` 来处理这种情况。

代码

输出

 
Zip file created successfully.   

在此示例中,使用 `os.walk()` 函数递归地遍历目录。`write()` 方法将每个文件添加到 Zip 文件中。`arcname` 选项确保在 Zip 文件内保留目录结构。

添加带压缩的文件

`ZipFile` 对象默认使用 ZIP 格式,未压缩。但是,我们可以在 Zip 文件创建过程中通过选择 `compression` 参数来选择压缩方法。

代码

输出

 
Zip file created successfully.   

结论

总之,Python 的 `zipfile` 模块提供了一种强大而灵活的方法来创建 Zip 文件,适用于备份、数据分发和归档等各种用途。本教程涵盖了创建 Zip 文件的基本过程,包括导入 `zipfile` 模块、添加文件和目录、处理异常以及使用上下文管理器和压缩等更高级的功能。Python 易于使用的语法和广泛的标准库使得管理 Zip 文件对于开发人员来说是一项合理的任务,有助于在 Python 应用程序中实现有效的文件组织和压缩。无论您的 Python 开发经验如何,掌握 `zipfile` 模块都将为您在项目中有效处理文件存档提供宝贵的技能。