1. 程式人生 > 實用技巧 >Python辦公自動化系列:10行Python程式碼自動清理電腦內重複檔案,減少電腦記憶體

Python辦公自動化系列:10行Python程式碼自動清理電腦內重複檔案,減少電腦記憶體

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

以下文章來源於騰訊雲 作者: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辦公自動化的強大,同時本次實現的功能可以和之前?自動整理檔案的指令碼結合使用!