博主之前在網上找了很多資料,發現rarfile庫不能直接調用,需要安裝unrar模塊,下面將詳細介紹整個實現流程。
第一步:安裝unrar模塊,直接pip install unrar可能會找不到庫,需要下載unrar library,也就是UnRAR.dll,下載地址為:http://www.rarlab.com/rar/UnRARDLL.exe ;
第二步:將unrar安裝路徑添加到系統環境變量,64位操作系統的路徑為C:\Program Files (x86)\UnrarDLL\x64,然后還需要將x64文件下的UnRAR64.lib和UnRAR64.dall重命名為unrar.lib和unrar.dall,因為unrar模塊識別的文件是unrar.dll和unrar.lib;
第三步:打開Pycharm,就可以用下面代碼實現:
from unrar import rarfile#導入rarfile庫
path1 = "C:\\test.rar"#需要解壓的文件路徑及地址
path2 = "C:\\TEST"#需要解壓到的文件夾地址
rf = rarfile.RarFile(path1) # pwd為解壓密碼
rf.extractall(path = path2, pwd = "123")
后來博主測試的時候發現,一般壓縮成RAR文件的時候,會出現一個選項“加密文件名”,如下圖所示,而當加密文件名后,上述代碼是無法完成解壓的,判斷一個文件是否加密了文件名,其實很簡單,只需雙擊壓縮包,如果能直接看到包里面的內容,此時是沒有加密文件名的,如果雙擊直接要求輸入密碼,這時是加密文件名的。
如果加密了文件名,可以通過下述代碼完成解壓:
from unrar import rarfile#導入rarfile庫
path1 = "C:\\test.rar"#需要解壓的文件路徑及地址
path2 = "C:\\TEST"#需要解壓到的文件夾地址
rf = rarfile.RarFile(path1 , pwd = "123") # pwd為解壓密碼
rf.extractall(path = path2, pwd = "123")
當然,如果你的壓縮包沒有密碼,可以使用以下代碼實現:
from unrar import rarfile#導入rarfile庫
file = rarfile.RarFile('C:\\test.rar') #需要解壓的文件路徑及文件
file.extractall('C:\\TEST') #需要解壓到的文件夾地址