如何用Python批量解壓ZIP文件?快速解決方案
文章目錄
- **如何用Python批量解壓ZIP文件?快速解決方案**
- 代碼
- 結果
- 詳細解釋
話不多說,先上干貨!!!
代碼
import os
import zipfiledef unzip_file(dir_path: str, zip_name: str, extract_dir: str, password: str = None):"""解壓指定的 ZIP 文件到目標目錄。@param dir_path: 包含 ZIP 文件的源目錄路徑@param zip_name: ZIP 文件的名稱(不帶 .zip 擴展名)@param extract_dir: 解壓后的文件存放目錄@param password: ZIP 文件的密碼(可選)@return: 無返回值"""# 構造完整的 ZIP 文件路徑zip_filepath = os.path.join(dir_path, zip_name + '.zip')# 構造解壓目標路徑extract_path = os.path.join(extract_dir, zip_name)# 創建解壓目標目錄,如果不存在if not os.path.exists(extract_path):os.makedirs(extract_path)try:# 打開 ZIP 文件with zipfile.ZipFile(zip_filepath, 'r') as extracting:# 如果設置了密碼,嘗試解壓if password:extracting.setpassword(password.encode('utf-8'))# 解壓所有文件到目標目錄extracting.extractall(extract_path)print(f"成功解壓:{zip_name}")except Exception as e:print(f"解壓失敗:{zip_name}, 錯誤:{str(e)}")if __name__ == '__main__':# 設置源目錄和目標目錄路徑dir_path = r'D:\桌面\baby' # 源目錄extract_dir = r'D:\桌面\ye' # 目標目錄# 獲取 ZIP 文件列表for filename in os.listdir(dir_path):# 檢查是否是 ZIP 文件if filename.endswith('.zip'):# 提取 ZIP 文件名(不帶 .zip)zip_name = filename[:-4]try:# 解壓 ZIP 文件,傳遞密碼(如無需密碼,可省略或設置為 None)unzip_file(dir_path, zip_name, extract_dir, password=None)except Exception as e:print(f"解壓失敗:{zip_name}, 錯誤:{str(e)}")print(f"所有 ZIP 文件已解壓到:{extract_dir}")
結果
詳細解釋
-
導入必要的模塊
import os import zipfile
- os:用于處理文件路徑、目錄創建等操作
- zipfile:用于處理zip文件的解壓
-
unzip_file函數
def unzip_file(dir_path: str, zip_name: str, extract_dir: str, password: str = None):"""解壓指定的 ZIP 文件到目標目錄。@param dir_path: 包含 ZIP 文件的源目錄路徑@param zip_name: ZIP 文件的名稱(不帶 .zip 擴展名)@param extract_dir: 解壓后的文件存放目錄@param password: ZIP 文件的密碼(可選)@return: 無返回值"""# 構造完整的 ZIP 文件路徑zip_filepath = os.path.join(dir_path, zip_name + '.zip')# 構造解壓目標路徑extract_path = os.path.join(extract_dir, zip_name)# 創建解壓目標目錄,如果不存在if not os.path.exists(extract_path):os.makedirs(extract_path)try:# 打開 ZIP 文件with zipfile.ZipFile(zip_filepath, 'r') as extracting:# 如果設置了密碼,嘗試解壓if password:extracting.setpassword(password.encode('utf-8'))# 解壓所有文件到目標目錄extracting.extractall(extract_path)print(f"成功解壓:{zip_name}")except Exception as e:print(f"解壓失敗:{zip_name}, 錯誤:{str(e)}")
-
功能:解壓指定的ZIP文件到目標目錄。
-
步驟:①構造完整的ZIP文件路徑和解壓目標路徑
? ②創建解壓目標目錄,如果不存在則創建
? ③打開ZIP文件,嘗試解壓到目標目錄
? ④處理異常,輸出成功或失敗信息
-
-
主程序部分
if __name__ == '__main__':# 設置源目錄和目標目錄路徑dir_path = r'D:\桌面\baby' # 源目錄extract_dir = r'D:\桌面\ye' # 目標目錄# 獲取 ZIP 文件列表for filename in os.listdir(dir_path):# 檢查是否是 ZIP 文件if filename.endswith('.zip'):# 提取 ZIP 文件名(不帶 .zip)zip_name = filename[:-4]try:# 解壓 ZIP 文件,傳遞密碼(如無需密碼,可省略或設置為 None)unzip_file(dir_path, zip_name, extract_dir, password=None)except Exception as e:print(f"解壓失敗:{zip_name}, 錯誤:{str(e)}")print(f"所有 ZIP 文件已解壓到:{extract_dir}")
-
功能:遍歷源目錄,解壓所有ZIP文件到目標目錄。
-
步驟:①設置源目錄
dir_path
和目標目錄extract_dir
? ②遍歷源目錄中的所有文件,篩選出ZIP文件
? ③對于每個ZIP文件,調用
unzip_file
函數進行解壓? ④處理異常,輸出解壓結果
-
看到這里就結束了,你學會了嗎???