🤟致敬讀者
- 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺
📘博主相關
- 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息
文章目錄
- Python 解壓縮(支持.zip/.rar/.7z格式)
- 1. 使用場景
- 2. 準備WinRAR壓縮工具
- 3.準備測試文件
- 4. 基礎實現代碼
- 5. 操作演示
- 6.完整實現代碼
📃文章前言
- 🔷文章均為學習工作中整理的筆記。
- 🔶如有錯誤請指正,共同學習進步。
Python 解壓縮(支持.zip/.rar/.7z格式)
1. 使用場景
實現自動化解壓多種格式的壓縮文件,包括.zip、.rar和.7z格式。
2. 準備WinRAR壓縮工具
- 從官網下載并安裝WinRAR
- 記錄WinRAR.exe文件路徑(默認安裝位置如下)
C:\Program Files\WinRAR\WinRAR.exe
安裝示意圖:
3.準備測試文件
- 將包含文件的本地文件夾分別壓縮為三種格式:
- TEST2ZIP.7z
- TEST2ZIP.rar
- TEST2ZIP.zip
- 創建目標文件夾TEST1RAR用于存放解壓文件
4. 基礎實現代碼
示例代碼如下
unpack_test.py
import subprocess
import osdef unpack(filepath, target_folder):# 獲取文件目錄和名稱dir_folder = os.path.dirname(filepath)file_name_pre = os.path.splitext(os.path.basename(filepath))[0]print("當前目錄:", dir_folder) print("文件名:", file_name_pre)# 配置WinRAR命令command = ['C:\\Program Files\\WinRAR\\WinRAR.exe','x', # 解壓保留目錄結構os.path.abspath(filepath),target_folder.rstrip('\\') + '\\','-o+', # 覆蓋已有文件'-y' # 自動確認]print("執行命令:", " ".join(command))result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)return target_folderif __name__ == '__main__':# 測試配置(可切換不同格式)file_pack = r'D:\重載\TEST2ZIP.zip'# file_pack = r'D:\重載\TEST2ZIP.7z'# file_pack = r'D:\重載\TEST2ZIP.rar'target_folder = r'D:\重載\TEST1RAR'unpack(file_pack, target_folder)
5. 操作演示
- 在unpack_test.py目錄打開CMD
2. 執行解壓命令
py unpack_test.py
執行后輸出如下
3. 檢查解壓結果
文件夾已存在,打開可查看打包前的文件夾內容
6.完整實現代碼
示例代碼如下
unpack_test.py
# 所需引入的庫
import subprocess
import os# 解壓通用函數入口
def unpack(filepath, target_folder):# 獲取文件所在目錄dir_folder = os.path.dirname(filepath)print("dir_folder----> ",dir_folder)# # 獲取文件名(包含后綴,如test1.rar、test2.zip、test3.7z)# file_name_all = os.path.basename(filepath)# print("file_name_all----> ",file_name_all)# # 將文件名和后綴分開,獲取分割后的數組# file_name_all_list = os.path.splitext(file_name_all)# print("file_name_all_list----> ",file_name_all_list)# # 獲取文件名(不包含后綴,如test1)# file_name_pre = file_name_all_list[0]# 以上注釋代碼的整合 目的為了獲取壓縮包文件名(不帶后綴)file_name_pre = os.path.splitext(os.path.basename(filepath))[0]print("file_name_pre----> ",file_name_pre)# 除了指定固定的輸出目錄,還可以使用文件名作為輸出目錄# 將rar文件所在目錄和文件名(不包含后綴)拼接,成為文件夾的路徑,用于解壓后存儲文件# target_folder = os.path.join(dir_folder, file_name_pre)# print("target_folder----> ",target_folder)# if not os.path.exists(target_folder):# os.makedirs(target_folder)# 本地winrar命令集成command = [# 本地WinRAR.exe文件路徑'C:\\Program Files\\WinRAR\\WinRAR.exe',# 解壓并保留完整目錄結構'x', # 傳入源RAR文件的絕對路徑(引號包裹,防止路徑中有空格)os.path.abspath(filepath),# 目標目錄(確保路徑以一個反斜杠結束,否則WinRAR會出錯),如果該參數省略,則會默認為當前目錄target_folder.rstrip('\\') + '\\',# 覆蓋已存在的文件'-o+', # 將壓縮包名稱作為子目錄添加到目標路徑中,如果添加該參數,則壓縮包名稱會作為子目錄添加到目標路徑中,產生兩層一樣的目錄# '-ad',# 后臺運行# '-ibck', # 自動確認所有提示'-y' ]print("正在執行命令:", " ".join(command))# 運行命令 subprocess本身會處理空格問題result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)# 返回目標目錄return target_folderif __name__ == '__main__':# 測試rar解壓# file_pack = r'D:\重載\TEST2ZIP.rar'# target_folder = r'D:\重載\TEST1RAR'# 測試7z解壓# file_pack = r'D:\重載\TEST2ZIP.7z'# target_folder = r'D:\重載\TEST1RAR'# 測試zip解壓file_pack = r'D:\重載\TEST2ZIP.zip'target_folder = r'D:\重載\TEST1RAR'unpack(file_pack, target_folder)
📜文末寄語
- 🟠關注我,獲取更多內容。
- 🟡技術動態、實戰教程、問題解決方案等內容持續更新中。
- 🟢《全棧知識庫》技術交流和分享社區,集結全棧各領域開發者,期待你的加入。
- 🔵?加入開發者的《專屬社群》,分享交流,技術之路不再孤獨,一起變強。
- 🟣點擊下方名片獲取更多內容🍭🍭🍭👇