欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解如何使用Python實(shí)現(xiàn)刪除重復(fù)文件

 更新時(shí)間:2022年10月09日 15:30:50   作者:冫馬讠成  
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)刪除重復(fù)文件功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下

Python自動(dòng)化辦公之刪除重復(fù)文件

思路介紹

兩層判斷:

1.先判斷文件大小是否為相同,大小不同則不是重復(fù)文件,予以保留;

2.文件大小相同再判斷文件md5,md5相同,則是重復(fù)文件,予以刪除。

源碼解說

from pathlib import Path
import hashlib


def getmd5(filename):
    # 接收文件路徑,返回文件md5值
    with open(filename, 'rb') as f:
        data = f.read()
    file_md5 = hashlib.new("md5", data).hexdigest()
    return file_md5


def main():
    path = r"F:\FileRecv\刪除文件測試"
    all_size = {}
    total_file = 0
    total_delete = 0

    # 獲取路徑內(nèi)的所有文件名,默認(rèn)是升序排列,相同文件將會(huì)保留日期時(shí)間最新的
    all_files = Path(path).glob('*.*')

    # 降序排列,相同文件將會(huì)保留文件名最短的(即日期時(shí)間最久的)
    all_files = sorted(all_files, reverse=True)

    # 遍歷文件路徑內(nèi)的所有文件
    for file in all_files:
        # 獲取文件所占字節(jié)大小,作為數(shù)據(jù)字典的鍵
        size = file.stat().st_size
        # name_and_md5列表用于存儲(chǔ)文件絕對(duì)路徑和md5值,作為數(shù)據(jù)字典的值
        name_and_md5 = [file, '']

        # 針對(duì)重復(fù)文件進(jìn)行處理,生成字典存儲(chǔ)相關(guān)信息
        # 字典all_size中key是size,value是name_and_md5列表
        # 針對(duì)相同size的文件,再調(diào)用getmd5函數(shù),獲取文件的md5值
        # 文件size不同(不在all_size.keys()中),則自動(dòng)判斷為不同的文件,予以保留
        if size in all_size.keys():
            # 調(diào)用getmd5函數(shù),獲取文件的md5值
            new_md5 = getmd5(file)
            if all_size[size][1] == '':
                all_size[size][1] = getmd5(all_size[size][0])
            # 判斷md5值存在,即文件重復(fù),則刪除文件。md5值不存在,則把md5值加入列表中
            if new_md5 in all_size[size]:
                file.unlink()
                total_delete += 1
            else:
                all_size[size].append(new_md5)
        else:
            all_size[size] = name_and_md5
        total_file += 1

    print(f'文件總數(shù):{total_file}')
    print(f'刪除個(gè)數(shù):{total_delete}')


if __name__ == '__main__':
    main()

效果圖:

代碼說明:特別感謝瑜亮老師提供的代碼!

知識(shí)拓展

pathlib和os,os.path常用的函數(shù)對(duì)應(yīng)關(guān)系

pathlib常用方法介紹:

Path(path).name  # 返回文件名+文件后綴

Path(path).stem  # 返回文件名

Path(path).suffix  # 返回文件后綴

Path(path).suffixes  # 返回文件后綴列表

Path(path).root  # 返回根目錄

Path(path).parts  # 返回文件

Path(path).anchor  # 返回根目錄

Path(path).parent  # 返回父級(jí)目錄

Path(path).parents  # 返回所有上級(jí)目錄的列表

Path.exists()  # 判斷 Path 路徑是否是一個(gè)已存在的文件或文件夾

Path.is_dir()  # 判斷 Path 是否是一個(gè)文件夾

Path.is_file()  # 判斷 Path 是否是一個(gè)文件

Path.mkdir()  # 創(chuàng)建文件夾

Path.rmdir()  # 刪除文件夾,文件夾必須為空

Path.unlink()  # 刪除文件

到此這篇關(guān)于詳解如何使用Python實(shí)現(xiàn)刪除重復(fù)文件的文章就介紹到這了,更多相關(guān)Python刪除重復(fù)文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 舉例講解如何在Python編程中進(jìn)行迭代和遍歷

    舉例講解如何在Python編程中進(jìn)行迭代和遍歷

    這篇文章主要介紹了舉例講解如何在Python編程中進(jìn)行迭代和遍歷,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例

    pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例

    這篇文章主要介紹了pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 使用Python第三方庫xlrd讀取Excel中的數(shù)據(jù)的流程步驟

    使用Python第三方庫xlrd讀取Excel中的數(shù)據(jù)的流程步驟

    這篇文章主要給大家介紹了使用Python第三方庫xlrd讀取Excel中的數(shù)據(jù)的流程步驟,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • Python、PyCharm安裝及使用方法(Mac版)詳解

    Python、PyCharm安裝及使用方法(Mac版)詳解

    這篇文章主要為大家詳細(xì)介紹了Mac版的Python、PyCharm安裝及使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • OpenCV實(shí)戰(zhàn)之圖像拼接的示例代碼

    OpenCV實(shí)戰(zhàn)之圖像拼接的示例代碼

    圖像拼接可以應(yīng)用到手機(jī)中的全景拍攝,也就是將多張圖片根據(jù)關(guān)聯(lián)信息拼成一張圖片。本文將介紹利用Python OpenCV實(shí)現(xiàn)圖像拼接的方法,感興趣的可以試一試
    2022-01-01
  • python 動(dòng)態(tài)遷移solr數(shù)據(jù)過程解析

    python 動(dòng)態(tài)遷移solr數(shù)據(jù)過程解析

    這篇文章主要介紹了python 動(dòng)態(tài)遷移solr數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python cv2圖像質(zhì)量壓縮的算法示例

    python cv2圖像質(zhì)量壓縮的算法示例

    使用opencv對(duì)圖像進(jìn)行編碼,一方面是圖像二進(jìn)制傳輸?shù)男枰?,另一方面?duì)圖像壓縮。本文主要介紹了python cv2圖像質(zhì)量壓縮的算法示例,感興趣的可以了解一下
    2021-06-06
  • python控制臺(tái)打印log輸出重復(fù)的解決方法

    python控制臺(tái)打印log輸出重復(fù)的解決方法

    在學(xué)習(xí)了python的函數(shù)式編程后,又接觸到了logging這樣一個(gè)強(qiáng)大的日志模塊。這篇文章主要給大家介紹了關(guān)于python控制臺(tái)打印log輸出重復(fù)的解決方法,需要的朋友可以參考下
    2021-05-05
  • Python3中的bytes和str類型詳解

    Python3中的bytes和str類型詳解

    這篇文章主要介紹了Python3中的bytes和str類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式

    Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式

    今天小編就為大家分享一篇Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評(píng)論