使用Python解壓zip、rar文件


解壓 zip 文件

基本解壓操作

import zipfile

'''
基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]])
mode:可選 r,w,a 代表不同的打開文件的方式;r 只讀;w 重寫;a 添加
compression:指出這個 zipfile 用什么壓縮方法,默認是 ZIP_STORED,另一種選擇是 ZIP_DEFLATED;
allowZip64:bool型變量,當設置為True時可以創建大於 2G 的 zip 文件,默認值 True;

'''
zip_file = zipfile.ZipFile(path)
zip_list = zip_file.namelist() # 得到壓縮包里所有文件

for f in zip_list:
    zip_file.extract(f, folder_abs) # 循環解壓文件到指定目錄
 
zip_file.close() # 關閉文件,必須有,釋放內存

 

其他方法

zipfile.is_zipfile('xxx.zip') # 判斷文件是否是個有效的zipfile
zipfile.namelist('xxx.zip') # 列表,存儲zip文件中所有子文件的path(相對於zip文件包而言的)
zipfile.infolist('xxx.zip') # 列表,存儲每個zip文件中子文件的ZipInfo對象
zipfile.printdir() # 打印輸出zip文件的目錄結構,包括每個文件的path,修改時間和大小
zipfile.open(name[,mode[,pwd]]) # 獲取一個子文件的文件對象,可以對其進行read,readline,write等操作
zipfile.setpassword(psw),為zip文件設置默認密碼
zipfile.testzip() # 讀取zip中的所有文件,驗證他們的CRC校驗和。返回第一個損壞文件的名稱,如果所有文件都是完整的就返回None
zipfile.write(filename[,arcname[,compression_type]]) # 將zip外的文件filename寫入到名為arcname的子文件中(當然arcname也是帶有相對zip包的路徑的),打開方式為w或a
zipfile.extract(member, path=None, pwd=None) # 解壓一個zip中的文件,path為解壓存儲路徑,pwd為密碼
zipfile.extractall(path[,pwd]) # 解壓zip中的所有文件,path為解壓存儲路徑,pwd為密碼

 

解壓 rar 文件

  Python 本身不支持 rar 文件的解壓,需要先安裝相關依賴才可使用

  • 安裝 unrar 模塊:pip install unrar
  • 下載安裝 unrar library,網址:http://www.rarlab.com/rar/UnRARDLL.exe 按照默認安裝路徑安裝
  • 將安裝后文件夾中的 X64 文件夾加入環境變量(默認路徑為 C:\Program Files (x86)\UnrarDLL\x64)
  • 系統變量中新建變量,變量名輸入 UNRAR_LIB_PATH,變量值為 C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll(32位系統下的變量值為C:\Program Files (x86)\UnrarDLL\UnRAR.dll)
  • 將 winrar 的目錄下的 unrar.exe 復制到 Python 路徑的 Scripts 文件夾下
  • 重啟PyCharm

基本操作

rf = rarfile.RarFile(_rarfile, mode='r') # mode的值只能為'r'
rf_list = rf.namelist() # 得到壓縮包里所有的文件
print('rar文件內容', rf_list)

for f in rf_list:
    rf.extract(f, folder_abs)  # 循環解壓,將文件解壓到指定路徑

# 一次性解壓所有文件到指定目錄
# rf.extractall(path) # 不傳path,默認為當前目錄

 

 

 

 

 

 

 

 

 

                      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM