Python辦公自動化系列:10行Python程式碼自動清理電腦內重複檔案,減少電腦記憶體
阿新 • • 發佈:2020-12-14
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理
以下文章來源於騰訊雲 作者:Python進階者
( 想要學習Python?Python學習交流群:1039649593,滿足你的需求,資料都已經上傳群檔案流,可以自行下載!還有海量最新2020python學習資料。 )
前言
大家好,又到了Python辦公自動化系列。
今天分享一個系統層面的自動化案例:
「給定一個資料夾,使用Python檢查給定資料夾下有無檔案重複,若存在重複則刪除」
# 假設x和y兩個檔案是相同的 print(filecmp.cmp(x, y))# True
解決了這個問題,我們就可以開始寫程式碼了!
Python實現
匯入需要的庫並設定目標資料夾路徑
import os import glob import filecmp dir_path = r'C:\\xxxx'
接著遍歷獲取所有檔案的絕對路徑,我們可以利用glob模組的萬用字元結合recursive引數即可完成,框架如下:
for file in glob.glob(path + '/**/*', recursive=True): pass
由於遍歷獲取每一個檔案或者資料夾後,需要判斷是否是檔案,如果是檔案則可能將絕對路徑存放到列表中,這裡需要再完成兩個事情:
具體程式碼如下
file_lst = [] for i in glob.glob(dir_path + '/**/*', recursive=True): if os.path.isfile(i): file_lst.append(i)
上一步我們獲取了目標資料夾下的所有檔案路徑,接下來就可以巢狀遍歷這個路徑列表,其中filecmp.cmp進行檔案判斷,os.remove進行檔案刪除
for x in file_lst: for y in file_lst: if x != y: if filecmp.cmp(x, y): os.remove(y)
這裡的程式碼已經實現了大致邏輯,但有一個細節需要考慮到:有可能迴圈到檔案已經被前面的判斷刪除了,導致os.remove(file)由於檔案不存在而報錯
因此,可以用os.path.exists對檔案存在進行判斷,如下所示:
for x in file_lst: for y in file_lst: if x != y and os.path.exists(x) and os.path.exists(y): if filecmp.cmp(x, y): os.remove(y)
這樣,一個簡易的檔案去重小程式就完成了,完整程式碼如下:
import os import glob import filecmp dir_path = r'C:\xxxx' file_lst = [] for i in glob.glob(dir_path + '/**/*', recursive=True): if os.path.isfile(i): file_lst.append(i) for x in file_lst: for y in file_lst: if x != y and os.path.exists(x) and os.path.exists(y): if filecmp.cmp(x, y): os.remove(y)
寫在最後
通過本文的Python自動化指令碼製作過程,我們可以再次體會Python辦公自動化的強大,同時本次實現的功能可以和之前?自動整理檔案的指令碼結合使用!