跳至主要内容

Zip 文件操作

Zip File Operations in Python

Zip 文件是一种流行的方式,可将多个文件压缩并捆绑到单个归档文件中。它们通常用于文件压缩、数据备份和文件分发等任务。在 Python 中压缩或解压缩文件是一种节省硬盘空间并使通过互联网传输文件变得更轻松的有用方法。

如何在 Python 中压缩文件

Python 中的 zipfile 模块提供了创建、读取、写入、追加和提取 ZIP 文件的功能。

压缩单个文件

你可以使用 zipfile 模块创建包含单个文件的 zip 文件。以下是如何操作

import zipfile

# name of the new Zip file
zip_file_name = 'new_zip_file.zip'

# name of the source file
file_name = 'file_to_compress.txt'

# Create a ZipFile Object
zip_object = zipfile.ZipFile(zip_file_name, 'w')

# Add the source file to the zip file
zip_object.write(file_name, compress_type=zipfile.ZIP_DEFLATED)

# Close the Zip File
zip_object.close()

在上面的代码中,我们首先导入了 zipfile 模块。然后我们定义了 zip 文件的名称和源文件的名称。我们创建了一个 ZipFile 对象,并使用 write() 方法向其中添加了源文件。然后我们使用 close() 方法关闭了 zip 文件。

压缩多个文件

你还可以创建包含多个文件的 zip 文件。以下是一个示例

import zipfile

# name of the new Zip file
zip_file_name = 'new_zip_file.zip'

# names of the source files
file_names = ['file_to_compressed1.txt',
              'file_to_compressed2.txt',
              'file_to_compressed3.txt'
             ]

# Create a ZipFile Object
zip_object = zipfile.ZipFile(zip_file_name, 'w')

# Add multiple files to the zip file
for file_name in file_names:
    zip_object.write(file_name, compress_type=zipfile.ZIP_DEFLATED)

# Close the Zip File
zip_object.close()

在上面的示例中,我们在列表中定义了多个源文件的名称。然后我们使用 for 循环和 write() 方法将每个文件添加到 zip 文件中。最后,我们使用 close() 方法关闭了 zip 文件。

为了进一步压缩 zip 文件,你可以将 compress_type 参数设置为 zipfile.ZIP_DEFLATED。这会将 DEFLATE 压缩方法应用于要压缩的文件。

在 Python 中解压缩文件

使用 zipfile 模块在 Python 中提取 zip 文件非常简单。以下有两种方法

import zipfile

with zipfile.ZipFile('myzipfile.zip', 'r') as zip_ref:
    zip_ref.extractall('destination_folder')

在此示例中,我们首先导入 zipfile 模块。然后我们为要提取的 zip 文件创建一个 ZipFile 类的实例。r 参数表示我们希望从 zip 文件中读取,而 myzipfile.zip 是我们要提取的文件的名称。

extractall() 方法从 zip 文件中提取所有文件,并将它们保存到指定的 destination_folder 中。如果 destination_folder 不存在,则会创建它。

import zipfile

with zipfile.ZipFile('myzipfile.zip', 'r') as zip_ref:
    for file in zip_ref.namelist():
        if file.endswith('.txt'):
            zip_ref.extract(file, 'destination_folder')

在此示例中,我们再次导入 zipfile 模块,并创建一个 ZipFile 类的实例。然后我们使用 namelist() 循环遍历 zip 文件中的所有文件。如果文件具有 .txt 扩展名,则将其提取到 destination_folder 中。

通过使用这两个代码示例,你可以轻松地在 Python 中从 zip 文件中提取文件。请记住根据你的特定需求调整文件路径和命名。

与我们一起做出贡献!

不要犹豫,为 GitHub 上的 Python 教程做出贡献:创建分支、更新内容并发出拉取请求。

Profile picture for user AliaksandrSumich
Python 工程师,第三方 Web 服务集成专家。
Profile picture for user angarsky
更新:05/03/2024 - 21:52