天天看點

python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...

python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...
python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...

作者 | 陳熹 來源 | 早起Python(ID:zaoqi-python)

python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...

前言

大家好,又到了 Python 辦公自動化系列。 今天分享一個系統層面的自動化案例: 「給定一個檔案夾,使用 Python 檢查給定檔案夾下有無檔案重複,若存在重複則删除」 主要涉及的知識點有:

  • os 子產品綜合應用
  • glob 子產品綜合應用
  • 利用 filecmp 子產品比較兩個檔案
python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...

步驟分析

該程式實作的邏輯可以具化為:

周遊擷取給定檔案夾下的所有檔案,然後通過嵌套循環兩兩比較檔案是否相同,如果相同則删除後者。

實作問題的關鍵就變成了👇 如何判斷兩個檔案是否相同? 在這裡我們可以使用 filecmp 子產品,來看看官方的介紹文檔:

  • filecmp.cmp(f1, f2, shallow=True)
  • 比較名為 f1 和 f2 的檔案,如果它們似乎相等則傳回 True,否則傳回False
  • 如果 shallow 為真,那麼具有相同 os.stat() 簽名的檔案将會被認為是相等的。否則,将比較檔案的内容。

是以可以這樣使用👇

# 假設x和y兩個檔案是相同的print(filecmp.cmp(x, y))# True

解決了這個問題,我們就可以開始寫代碼了!

Python實作

導入需要的庫并設定目标檔案夾路徑:

import osimport globimport filecmp dir_path = r'C:\\xxxx'

接着周遊擷取所有檔案的 絕對路徑 ,我們可以利用 glob 子產品的通配符結合 recursive 參數即可完成,架構如下:

for file in glob.glob(path + '*', recursive=True):pass

由于周遊擷取每一個檔案或者檔案夾後,需要判斷是否是檔案,如果是檔案則可能将絕對路徑存放到清單中,這裡需要再完成兩個事情:

  1. 首先建立一個空清單,後面用 list.append(i) 添加檔案路徑。
  2. 接着利用 os.path.isfile(i) 判斷是否是檔案,傳回 True 則執行添加元素的操作。

具體代碼如下:

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 osimport globimport 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 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...

寫在最後

通過本文的 Python 自動化腳本制作過程,我們可以再次體會 Python 辦公自動化的強大,同時本次實作的功能可以和之前自動整理檔案 的腳本結合使用! 最後還是希望大家能夠了解 Python 辦公自動化的一個核心就是批量操作-解放雙手,讓複雜的工作自動化!

python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...
python 判斷檔案夾是否存在 否則建立_10 行 Python 代碼自動清理電腦重複檔案,解放雙手!...
☞12306 背後的技術大牛:我不跟人拼智商,我就跟他們拼狠!☞融資 2000 萬美元後,他竟将核心代碼全開源,這……能行嗎?☞鴻蒙加海思,麒麟加龍芯,組合拳能否渡劫“生态”危機☞用 Python 詳解《英雄聯盟》遊戲取勝的重要因素!☞2020 年最厲害的 10 門程式設計語言☞“善”用區塊鍊:善是初心,鍊是保障點分享點點贊點在看