Python 庫手冊:zipfile 文件壓縮模塊

zipfile 是 Python 自帶的標準庫模塊,用於創建、讀取、寫入和解壓 ZIP 格式的壓縮文件。它爲開發者提供了操作 .zip 文件的便捷方式,無需藉助外部解壓軟件或第三方庫。

應用場景包括:

(1)打包多個文件或目錄爲一個 ZIP 文件。

(2)解壓 ZIP 文件中的全部或部分內容。

(3)遍歷壓縮包內容,列出文件名、壓縮比等信息。

(4)自動化數據歸檔、備份或傳輸處理。

◆ ◆ ◆

核心概念

1、zipfile.ZipFile 是操作 ZIP 文件的核心類,支持讀取、寫入和追加模式。

2、ZIP 格式是一種基於無損壓縮的歸檔格式,可存儲多個文件和子目錄。

3、ZIP 文件內部可包含路徑結構,但所有信息都存在於單個 .zip 文件中。

4、操作 ZIP 文件時建議使用 with 上下文管理,確保資源正確關閉。

5、zipfile 也支持讀取壓縮包中文件的字節內容和信息,但不支持修改壓縮包中已有的文件(只能重新寫一個新的)。

◆ ◆ ◆

應用舉例

例 1:將多個文件打包爲 ZIP 文件

例 2:讀取 ZIP 文件內容列表

例 3:解壓所有文件到指定目錄

例 4:提取單個文件並讀取內容

◆ ◆ ◆

常用函數速覽

zipfile.ZipFile(filename, mode="r")

創建一個 ZipFile 對象(用於讀/寫/追加 ZIP 文件)。

參數:

filename:ZIP 文件名或類文件對象

mode:打開模式,常用爲 "r"(讀取)、"w"(新建)、"a"(追加)

返回:ZipFile 對象

zipfile.write(filename, arcname=None)

將文件添加進 ZIP 壓縮包。

參數:

filename:要添加的本地文件路徑

arcname:壓縮包中顯示的文件名或路徑(默認爲原文件名)

返回:無

zipfile.writestr(name, data)

將字符串或字節數據直接寫入壓縮包中(不依賴外部文件)。

參數:

name:壓縮包內的文件名

data:要寫入的字節或字符串內容(推薦使用 bytes)

返回:無

zipfile.extract(member, path=None)

將某個文件從 ZIP 包中解壓到指定路徑。

參數:

member:壓縮包內的文件名

path:可選,目標文件夾(默認當前目錄)

返回:解壓後的文件路徑

zipfile.extractall(path=None, members=None)

將 ZIP 包中的所有文件解壓出來。

參數:

path:目標文件夾(默認當前目錄)

members:要解壓的文件列表(默認解壓全部)

返回:無

zipfile.namelist()

返回壓縮包中所有文件的名稱(字符串列表)。

參數:無

返回:字符串列表

zipfile.read(name)

讀取 ZIP 內部文件的字節內容。

參數:name 爲壓縮包內文件名

返回:字節數據(bytes 類型)

zipfile.infolist()

返回壓縮包中每個文件的詳細信息列表(ZipInfo 對象)。

參數:無

返回:包含 ZipInfo 對象的列表

zipfile.testzip()

測試 ZIP 文件中的數據是否完整。校驗文件頭和部分數據的 CRC。

參數:無

返回:若無錯誤,返回 None;否則,返回第一個出錯文件的文件名字符串

◆ ◆ ◆

補充說明

1、ZIP 文件中的目錄層級會根據寫入時的路徑結構自動構建。

2、寫模式 "w" 會覆蓋已有壓縮文件,請謹慎使用。

3、若需支持密碼保護 ZIP 文件或解壓大文件,推薦使用第三方庫如 pyzipper、zipfile36 等。

“點贊有美意,讚賞是鼓勵”