首頁 > 科技

手把手教你用Python實現批量檔案的壓縮處理

2021-06-23 15:51:36

來源:Python爬蟲與資料探勘

作者:崔豔飛

一、前言

大家好,我是崔豔飛。接到項目求助,需要對上千個資料夾中的檔案進行壓縮處理,並要刪除原始檔,只保留壓縮後的壓縮檔案,資料量大,手動完成耗時耗力,用Python處理再合適不過了。

二、項目目標

批量對資料夾的內容進行壓縮處理,滿足客戶要求。

三、項目準備

軟體:PyCharm

需要的庫:os, shutil,zipfile

四、項目分析

1)如何讀取原始檔?

利用OS庫,獲取資料夾名list,利用for迴圈,輕鬆拿到要壓縮的原始檔。

2)如何進行壓縮處理?

利用zipfile庫中的zipfile.ZipFile()對獲取到的檔案進行壓縮處理。

3)如何刪除原始檔?

先利用os庫的remove()刪除檔案,再利用shutil庫的rmtree()刪除空資料夾。

五、項目實現

1、第一步匯入需要的三個庫

import os as os

import shutil

import zipfile

2、第二步定義刪除檔案函數和壓縮檔案函數

def del_(rootdir):filelist = [] filelist = os.listdir(rootdir) # 列出該目錄下的所有檔名 for f in filelist: filepath = os.path.join(rootdir, f) # 將檔名對映成絕對路勁 if os.path.isfile(filepath): # 判斷該檔案是否為檔案或者資料夾 os.remove(filepath) # 若為檔案,則直接刪除 elif os.path.isdir(filepath): shutil.rmtree(filepath, True) # 若為資料夾,則刪除該資料夾及資料夾內所有檔案 shutil.rmtree(rootdir, True)def zipDir(dirpath,outFullName): zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED) for path,dirnames,filenames in os.walk(dirpath): # 去掉目標跟路徑,只對目標資料夾下邊的檔案及資料夾進行壓縮 fpath = path.replace(dirpath,'') for filename in filenames: zip.write(os.path.join(path,filename),os.path.join(fpath,filename)) zip.close()

3、第三步創建主函數

def main():path_end = 'D:/a/h/' date= os.listdir(path_end) # 獲取目標資料夾所有資料夾名列表 for f in date: ljbc='D:/a/h/'+f+'/'+'查詢資訊.zip' ljbc2 = 'D:/a/h/' + f + '/' + '下發修改.zip' #以上兩行是創建壓縮後的檔名 ljcx='D:/a/h/'+f+'/查詢資訊' ljxf = 'D:/a/h/' + f + '/下發修改' #以上兩行是要壓縮的原始檔 zipDir(ljcx,ljbc) zipDir(ljxf, ljbc2) del_(ljcx) del_(ljxf) if __name__ == '__main__': main()

六、效果展示

1、處理後的資料夾:

2、處理後的資料夾內的壓縮檔案:

七、總結

本文介紹瞭如何利用Python對大批量的檔案進行批量壓縮處理,其實就是幾行語句就能實現,程式寫好後,不到1分鐘就能完成1個人1天也不可能完成的任務。人生苦短,要用Python!


IT145.com E-mail:sddin#qq.com