如何在 Python 中解压文件

Azaz Farooq 2023年10月10日
  1. 在 Python 中使用 extractall() 方法到工作目录中解压文件
  2. 在 Python 中使用 extractall() 方法解压文件到不同的目录下
  3. 在 Python 中使用基于条件的 extractall() 方法解压文件
  4. 在 Python 中使用 unpack_archive() 方法解压文件
如何在 Python 中解压文件

ZIP 文件是一种档案文件格式,有助于进行无损数据压缩。一个 ZIP 文件可以包含一个以上的压缩文件。在一个 ZIP 文件中,多个文件的传输速度比单个文件快,而且它减少了数据的大小。Python 内置的 ZipFile 模块可以用来解压 Zip 文件。

本文将讨论在 Python 中提取压缩文件或 Zip 文件的不同方法。

在 Python 中使用 extractall() 方法到工作目录中解压文件

我们先用下面的命令导入 Python 内置的 zipfile 模块。

from zipfile import ZipFile

完整的示例代码如下。

from zipfile import ZipFile

test_file_name = "my_files.zip"

with ZipFile(test_file_name, "r") as zip:
    zip.printdir()
    zip.extractall()

ZipFile 函数中的 r 代表文件的读取操作,而 extractall() 函数则将压缩文件的内容提取到当前工作目录。

输出:

 File Name         Modified                  Size
file1.txt          2020-11-09 23:03:06        0
file2.txt          2020-11-09 23:03:18        0

在 Python 中使用 extractall() 方法解压文件到不同的目录下

这个方法提取压缩文件,但提取到不同的目录。主要的区别是,我们将在 extractall() 方法中传递目标目录作为参数。

完整的示例代码如下。

from zipfile import ZipFile

with ZipFile("my_files.zip", "r") as zip:
    zip.extractall("temp")
    print("File is unzipped in temp folder")

在当前的工作目录下创建一个新的目录 temp,然后将所有的压缩文件解压到该目录下。

输出:

Files are unzipped in temp folder

在 Python 中使用基于条件的 extractall() 方法解压文件

当你的压缩文件中有大量的文件,并且你需要提取具有特定扩展名的文件时,这个方法就很方便。例如,我们将从压缩文件中提取 .txt 文件。

完整的示例代码如下。

from zipfile import ZipFile

with ZipFile("my_files.zip", "r") as obj_zip:
    FileNames = obj_zip.namelist()
    for fileName in FileNames:
        if fileName.endswith(".txt"):
            zipObj.extract(fileName, "temp_txt")

namelist() 函数返回 zip 文件中所有文件的名称。

endswith() 方法检查文件名是否以 .txt 结束。如果是这样,extract() 函数将提取 .txt 文件到当前工作目录下的 temp_txt 文件夹。

在 Python 中使用 unpack_archive() 方法解压文件

本方法使用 Python 内置的 shutil 模块。它将提取所有格式的存档文件。

完整的示例代码如下。

import shutil

shutil.unpack_archive("test.zip")

提取的文件将在你运行这个脚本的当前工作目录中。

相关文章 - Python Zip