如何在 Python 中解压文件
Azaz Farooq
2023年1月30日
2020年11月24日
-
在 Python 中使用
extractall()
方法到工作目录中解压文件 -
在 Python 中使用
extractall()
方法解压文件到不同的目录下 -
在 Python 中使用基于条件的
extractall()
方法解压文件 -
在 Python 中使用
unpack_archive()
方法解压文件
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")
提取的文件将在你运行这个脚本的当前工作目录中。