是這樣的,電腦上的堆積的照片有點多,並且重複的照片被放在了不一樣的目錄,佔用的空間愈來愈大,數量也多得已經不太適合人工分辨整理,寫個Python腳原本處理吧。python
假如你要處理的重複文件有不一樣的文件名,最簡單的辦法就是經過MD5來肯定兩個文件是否是同樣的。git
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性能調整,通常選擇的值約等於文件的平均大小。github
接下來遍歷全部文件,使用MD5做爲key,路徑做爲value,保存起來。app
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 技術愛好者,目前從事測試開發相關工做,轉載請註明原文出處。ui
歡迎關注個人博客 https://betacat.online,你能夠到個人公衆號中去當吃瓜羣衆。spa