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 等。
“點贊有美意,讚賞是鼓勵”