摘要:處理重復文件最后一步非常簡單,把上一步建立的字典做一個簡單的過濾就能找到重復文件。
是這樣的,電腦上的堆積的照片有點多,而且重復的照片被放在了不同的目錄,占用的空間越來越大,數量也多得已經不太適合人工分辨整理,寫個Python腳本來處理吧。
文件的唯一標識 - MD5假如你要處理的重復文件有不同的文件名,最簡單的辦法就是通過MD5來確定兩個文件是不是一樣的。
def md5sum(filename, blocksize=65536): hash = hashlib.md5() with open(filename, "rb") as f: for block in iter(lambda: f.read(blocksize), b""): hash.update(block) return hash.hexdigest()
這個方法可以快速獲得一個文件的MD5值,blocksize 可以根據文件大小和CPU性能調整,一般選擇的值約等于文件的平均大小。
保存所有文件標識和路徑接下來遍歷所有文件,使用MD5作為key,路徑作為value,保存起來。
dup = {} def build_hash_dict(dir_path, pattern="*.jpg"): def save(file): hash = md5sum(file) if hash not in dup.keys(): dup[hash] = [file] else: dup[hash].append(file) p = Path(dir_path) for item in p.glob("**/" + pattern): save(str(item))處理重復文件
最后一步非常簡單,把上一步建立的字典做一個簡單的過濾就能找到重復文件。
def get_duplicate(): return {k: v for k, v in dup.items() if len(v) > 1} for hash, files in get_duplicate().items(): print("{}: {}".format(hash, files))
接下來你可以根據自己的需要刪除或者保留某個路徑下的文件,本文到此為止。
完整的腳本代碼: https://gist.github.com/tobyq...
關于作者:Toby Qin, Python 技術愛好者,目前從事測試開發(fā)相關工作,轉載請注明原文出處。
歡迎關注我的博客 https://betacat.online,你可以到我的公眾號中去當吃瓜群眾。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/44663.html
摘要:之前寫了一個簡化版的使用查找目錄中的重復文件,現在升級了一下,我們來提供一個友好的網頁界面。掃描結束后,啟動服務即可。順利的話用瀏覽器打開就可以看到一個友好的網頁,可以通過文件或者文件名來清理重復文件,可以預覽圖片文件。 之前寫了一個簡化版的使用Python查找目錄中的重復文件,現在升級了一下,我們來提供一個友好的網頁界面。 思路 上一個版本我們非常簡單粗暴地將所有文件的hash掃描后...
摘要:和是最受歡迎的。虛擬環(huán)境將允許將項目依賴項與本地機器依賴項隔離開來。文件將是項目中的主文件。運行后,檢查本地主機。在中創(chuàng)建一個名為的文件夾,并創(chuàng)建一個名為的文件夾。部署創(chuàng)建帳戶為前端和全棧應用程序提供免費部署服務。 ...
摘要:基本的自定義在我們感受到中所有東西的便利之后,讓我們看看如何改進它。不像的選擇器,的鍵在每個對象中只能重復一次。語言特定的設置會覆蓋全局域的任何設置。作于域的名稱顯示在設置視圖中的每個語言的包中。 基本的自定義 在我們感受到Atom中所有東西的便利之后,讓我們看看如何改進它。可能有一些快捷鍵你經常使用但是感覺很別扭,或者一些顏色不是十分適合你。Atom具有驚人的靈活性,所以讓我們對它...
閱讀 3664·2021-10-12 10:11
閱讀 1026·2021-09-22 15:42
閱讀 3476·2019-08-30 13:06
閱讀 915·2019-08-29 17:05
閱讀 1660·2019-08-29 12:21
閱讀 2388·2019-08-29 11:31
閱讀 1145·2019-08-23 18:37
閱讀 1265·2019-08-23 14:58