Python 解壓縮(支持.zip/.rar/.7z格式)

🤟致敬讀者

  • 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺

📘博主相關

  • 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息

文章目錄

  • Python 解壓縮(支持.zip/.rar/.7z格式)
    • 1. 使用場景
    • 2. 準備WinRAR壓縮工具
    • 3.準備測試文件
    • 4. 基礎實現代碼
    • 5. 操作演示
    • 6.完整實現代碼


📃文章前言

  • 🔷文章均為學習工作中整理的筆記。
  • 🔶如有錯誤請指正,共同學習進步。

Python 解壓縮(支持.zip/.rar/.7z格式)

1. 使用場景

實現自動化解壓多種格式的壓縮文件,包括.zip、.rar和.7z格式。

2. 準備WinRAR壓縮工具

  1. 從官網下載并安裝WinRAR
  2. 記錄WinRAR.exe文件路徑(默認安裝位置如下)
C:\Program Files\WinRAR\WinRAR.exe

安裝示意圖:
在這里插入圖片描述

3.準備測試文件

  1. 將包含文件的本地文件夾分別壓縮為三種格式:
    • TEST2ZIP.7z
    • TEST2ZIP.rar
    • TEST2ZIP.zip
  2. 創建目標文件夾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. 操作演示

  1. 在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)

📜文末寄語

  • 🟠關注我,獲取更多內容。
  • 🟡技術動態、實戰教程、問題解決方案等內容持續更新中。
  • 🟢《全棧知識庫》技術交流和分享社區,集結全棧各領域開發者,期待你的加入。
  • 🔵?加入開發者的《專屬社群》,分享交流,技術之路不再孤獨,一起變強。
  • 🟣點擊下方名片獲取更多內容🍭🍭🍭👇

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86530.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86530.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86530.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

龍虎榜——20250627

上證指數放量收陰線,回踩5天均線,但個股總體漲多跌少。 深證指數縮量收十字星,在前期壓力位震蕩。 2025年6月27日龍虎榜行業方向分析 1. 金融科技(跨境支付數字安全) 代表標的:吉大正元(跨境認…

三步實現B站緩存視頻轉MP4格式

本期我們來實現如何將B站緩存的視頻轉成MP4格式,直接在本地播放。 首先我們在Bilibili客戶端緩存一個視頻,保存的文件如下: 這里有兩個m4s文件,大的哪個是視頻文件,小的是音頻文件,這里我們用視頻播放軟件…

MySQL 與 Oracle 事務:深度解析與全面對比

在數據庫管理領域,事務是確保數據一致性和完整性的核心機制,它允許用戶將一系列操作視為一個不可分割的整體,要么全部成功執行,要么全部回滾。MySQL 和 Oracle 作為兩款廣泛使用的關系型數據庫管理系統,它們在事務處理…

麒麟系統如何輸出啟動日志到串口

1、臺式機系統啟動日志輸出到串口 (1)GRUB配置 編輯GRUB配置文件(如/etc/default/grub),添加或修改以下參數: GRUB_CMDLINE_LINUX“consoletty0 consolettyS0,115200n8” tty0:表示將日志輸出…

JUC:2棧和棧幀的定義

這部分內容雖然是JVM中的定義,但是在juc中屬于底層知識,必須要學習 每個線程在創建時,就會將自身的資源存儲在棧中,將線程需要運行的方法存放在方法區。 棧中會存儲方法的局部變量、方法的參數以及方法返回的地址,這…

阿里云OSS上傳文件Utils (@PostConstruct注解配置+Environment )

首先在 application.yaml 配置bucketName, endpoint, accessKeyId, accessKeySecret這里利用的是 spring 的生命周期, 在 bean 實例化后,使用PostConstruct注解 Environment 屬性 進行spring上下文環境賦值 package com.shuai.utils;import com.aliyun.oss.*; import com.aliy…

Jetson家族橫向對比:如何選擇你的邊緣計算設備

Jetson家族橫向對比:如何選擇你的邊緣計算設備 一、邊緣計算設備選型核心維度 在選擇Jetson平臺前,需明確以下關鍵指標: 算力需求:TOPS(INT8) / FP16精度功耗限制:被動散熱/主動散熱接口擴展:CSI攝像頭數…

《聊一聊ZXDoc》之汽車服務導向SOME/IP

ZXDoc支持SOME/IP功能,通過服務導向架構實現跨域通信標準化,降低系統耦合,支持動態服務發現與調用,提升分布式系統擴展性和維護效率。 什么是SOME/IP? SOME/IP(Scalable service-Oriented MiddlewarE ov…

Learning Semantic-Aware Knowledge Guidance for Low-Light Image Enhancement 論文閱讀

學習語義感知知識引導用于低光照圖像增強 摘要 低光圖像增強(LLIE)研究如何改善照明并生成正常光照的圖像。大多數現有方法通過全局和均勻的方式改進低光圖像,而沒有考慮不同區域的語義信息。如果沒有語義先驗,網絡可能會容易偏…

【(Topk問題及其二叉樹遍歷】

Topk問題及其二叉樹遍歷 1.Topk問題2.二叉樹的前序,中序,后序3.求二叉樹的個數(TreeSize)。4.求二叉樹的最大深度(maxDepth)。5.求二叉樹的第K層的節點個數(TreeKLevel)。6.查找二叉…

AI+實時計算如何賦能金融系統?DolphinDB 在國泰君安期貨年度中期策略會的演講

6月25日,國泰君安期貨2025年度中期策略會在上海順利開幕。本次策略會以“觀勢明變,本固枝榮”為主題,特邀15位重量級行業嘉賓和52位明星分析師發表精彩觀點,DolphinDB 受邀出席會議并作主題演講。 實時計算如何賦能量化投研交易 …

PHP Protobuf 手寫生成器,

? 以下是一個純 PHP 編寫的通用 Protobuf 二進制生成器,支持: varint fixed32 fixed64 length-delimited(如字符串、嵌套 message) 嵌套結構 (nested) 多字段 repeated ? 封裝器代碼(可直接用) &…

喜訊 | Mediatom斬獲2025第十三屆TopDigital創新營銷獎「年度程序化廣告平臺」殊榮

6月27日,2025第十三屆TopDigital創新營銷盛典在上海圓滿落幕,TopDigital創新營銷獎獲獎結果也已正式揭曉。本屆TopDigital創新營銷獎共有694家參展企業,3326件案例,AdMergeX旗下Mediatom媒體變現SaaS及服務平臺在眾多作品中脫穎而…

SQL 中 EXISTS 的原理與作用詳解

平常也一直在用EXISTS 來進行邏輯判斷,但是從來沒有正經理解它,只知道找到有就返回True,沒有就返回False。那么今天詳細的理解一下(主要借鑒了CSDN 其他博客文章,以及自己做的一個小例子) 一、EXISTS是什么…

【Docker】解決:構建(docker build)或重新運行容器時,丟失apt-get update問題

一、解決:構建(docker build)或重新運行容器時,丟失apt-get update問題 在 Docker 容器中,每次構建(docker build)或重新運行容器時,默認情況下所有更改都會丟失,因為容…

流程管理系統方案成本評估報告(第一稿,復盤明確數據不準確,僅供參考哦)

??一、成本評估框架?? 所在制造業流程數字化轉型的成本需從??一次性投入??與??持續運營成本??兩個維度分析,并量化??直接收益??與??間接收益??。詳細評估模型初稿: ??二、成本構成與數據支撐?? ??1. 一次性投入成本?? ??項目????費用范圍…

高并發分布式鎖解決方案對比與選型指南

高并發分布式鎖解決方案對比與選型指南 在大規模分布式系統中,分布式鎖是確保資源互斥訪問、保證數據一致性的關鍵組件。針對不同業務場景,分布式鎖的實現方案多種多樣,各有優缺點。本文將從問題背景出發,對Redis原生鎖/RedLock、…

全面掌握Vue 3響應式:ref自動解包、reactive對象替換及響應式丟失問題

Vue 3的響應式系統是其最核心的特性之一,主要通過ref和reactive這兩個API來實現。本文將詳細介紹這兩個API的使用方法、區別以及最佳實踐。 1. ref()的基本使用 ref()用于創建一個響應式的數據引用。它可以包裝任何類型的值,包括基本類型和對象類型。 …

【科普】 AI大模型應用架構圖大全

AI大模型應用架構圖大全 AI大模型技術全景視圖: AI大模型通用技術架構圖 AI大模型通用技術架構圖 AI大模型通用技術架構圖 RAG知識庫業務架構圖 AI農業大模型技術架構圖 AI導購大模型技術架構圖 AI導購大模型技術架構圖 AI大模型合規風控管理架構圖 AI大模型合規管…

Educational Codeforces Round 180 (Rated for Div. 2) A-D題解

A. Race 題意 在一個數軸上,獎品可能出現在 x x x 點或 y y y 點,Alice 現在在 a a a 點,請問Bob是否存在一個點 b b b,使得無論獎品出現在 x x x 點還是 y y y 點,Bob都能比Alice先拿到( ∣ b ?…