如何在 Python 中解壓檔案

Azaz Farooq 2023年1月30日 2020年11月24日
  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