摘要:處理重復(fù)文件最后一步非常簡(jiǎn)單,把上一步建立的字典做一個(gè)簡(jiǎn)單的過(guò)濾就能找到重復(fù)文件。
是這樣的,電腦上的堆積的照片有點(diǎn)多,而且重復(fù)的照片被放在了不同的目錄,占用的空間越來(lái)越大,數(shù)量也多得已經(jīng)不太適合人工分辨整理,寫(xiě)個(gè)Python腳本來(lái)處理吧。
文件的唯一標(biāo)識(shí) - MD5假如你要處理的重復(fù)文件有不同的文件名,最簡(jiǎn)單的辦法就是通過(guò)MD5來(lái)確定兩個(gè)文件是不是一樣的。
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()
這個(gè)方法可以快速獲得一個(gè)文件的MD5值,blocksize 可以根據(jù)文件大小和CPU性能調(diào)整,一般選擇的值約等于文件的平均大小。
保存所有文件標(biāo)識(shí)和路徑接下來(lái)遍歷所有文件,使用MD5作為key,路徑作為value,保存起來(lái)。
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))處理重復(fù)文件
最后一步非常簡(jiǎn)單,把上一步建立的字典做一個(gè)簡(jiǎn)單的過(guò)濾就能找到重復(fù)文件。
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))
接下來(lái)你可以根據(jù)自己的需要?jiǎng)h除或者保留某個(gè)路徑下的文件,本文到此為止。
完整的腳本代碼: https://gist.github.com/tobyq...
關(guān)于作者:Toby Qin, Python 技術(shù)愛(ài)好者,目前從事測(cè)試開(kāi)發(fā)相關(guān)工作,轉(zhuǎn)載請(qǐng)注明原文出處。
歡迎關(guān)注我的博客 https://betacat.online,你可以到我的公眾號(hào)中去當(dāng)吃瓜群眾。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44663.html
摘要:之前寫(xiě)了一個(gè)簡(jiǎn)化版的使用查找目錄中的重復(fù)文件,現(xiàn)在升級(jí)了一下,我們來(lái)提供一個(gè)友好的網(wǎng)頁(yè)界面。掃描結(jié)束后,啟動(dòng)服務(wù)即可。順利的話用瀏覽器打開(kāi)就可以看到一個(gè)友好的網(wǎng)頁(yè),可以通過(guò)文件或者文件名來(lái)清理重復(fù)文件,可以預(yù)覽圖片文件。 之前寫(xiě)了一個(gè)簡(jiǎn)化版的使用Python查找目錄中的重復(fù)文件,現(xiàn)在升級(jí)了一下,我們來(lái)提供一個(gè)友好的網(wǎng)頁(yè)界面。 思路 上一個(gè)版本我們非常簡(jiǎn)單粗暴地將所有文件的hash掃描后...
摘要:和是最受歡迎的。虛擬環(huán)境將允許將項(xiàng)目依賴項(xiàng)與本地機(jī)器依賴項(xiàng)隔離開(kāi)來(lái)。文件將是項(xiàng)目中的主文件。運(yùn)行后,檢查本地主機(jī)。在中創(chuàng)建一個(gè)名為的文件夾,并創(chuàng)建一個(gè)名為的文件夾。部署創(chuàng)建帳戶為前端和全棧應(yīng)用程序提供免費(fèi)部署服務(wù)。 ...
摘要:基本的自定義在我們感受到中所有東西的便利之后,讓我們看看如何改進(jìn)它。不像的選擇器,的鍵在每個(gè)對(duì)象中只能重復(fù)一次。語(yǔ)言特定的設(shè)置會(huì)覆蓋全局域的任何設(shè)置。作于域的名稱顯示在設(shè)置視圖中的每個(gè)語(yǔ)言的包中。 基本的自定義 在我們感受到Atom中所有東西的便利之后,讓我們看看如何改進(jìn)它。可能有一些快捷鍵你經(jīng)常使用但是感覺(jué)很別扭,或者一些顏色不是十分適合你。Atom具有驚人的靈活性,所以讓我們對(duì)它...
閱讀 3650·2021-10-12 10:11
閱讀 1013·2021-09-22 15:42
閱讀 3465·2019-08-30 13:06
閱讀 907·2019-08-29 17:05
閱讀 1650·2019-08-29 12:21
閱讀 2378·2019-08-29 11:31
閱讀 1136·2019-08-23 18:37
閱讀 1257·2019-08-23 14:58