国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Python查找目錄中的重復(fù)文件

melody_lql / 763人閱讀

摘要:處理重復(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

相關(guān)文章

  • Python 查找重復(fù)文件升級(jí)版 - photodup

    摘要:之前寫(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掃描后...

    bingo 評(píng)論0 收藏0
  • 最終篇:簡(jiǎn)潔易懂,初學(xué)者挑戰(zhàn)學(xué)習(xí)Python編程30天 (五)

    摘要:和是最受歡迎的。虛擬環(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ù)。 ...

    1fe1se 評(píng)論0 收藏0
  • Atom飛行手冊(cè)翻譯: 2.13 基本的自定義

    摘要:基本的自定義在我們感受到中所有東西的便利之后,讓我們看看如何改進(jìn)它。不像的選擇器,的鍵在每個(gè)對(duì)象中只能重復(fù)一次。語(yǔ)言特定的設(shè)置會(huì)覆蓋全局域的任何設(shè)置。作于域的名稱顯示在設(shè)置視圖中的每個(gè)語(yǔ)言的包中。 基本的自定義 在我們感受到Atom中所有東西的便利之后,讓我們看看如何改進(jìn)它。可能有一些快捷鍵你經(jīng)常使用但是感覺(jué)很別扭,或者一些顏色不是十分適合你。Atom具有驚人的靈活性,所以讓我們對(duì)它...

    opengps 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<