最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何使用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ù)文件,予以刪除。

源碼解說(shuō)

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\刪除文件測(cè)試"
    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()

效果圖:

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

知識(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pyinstaller打包可執(zhí)行文件,存放路徑包含中文無(wú)法運(yùn)行的解決方案

    pyinstaller打包可執(zhí)行文件,存放路徑包含中文無(wú)法運(yùn)行的解決方案

    這篇文章主要介紹了pyinstaller打包可執(zhí)行文件,存放路徑包含中文無(wú)法運(yùn)行的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • PyTorch與PyTorch?Geometric的安裝過(guò)程

    PyTorch與PyTorch?Geometric的安裝過(guò)程

    這篇文章主要介紹了PyTorch與PyTorch?Geometric的安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Python必知必會(huì)之os模塊實(shí)例詳解

    Python必知必會(huì)之os模塊實(shí)例詳解

    os模塊是Python標(biāo)準(zhǔn)庫(kù)中整理文件和目錄最為常用的模塊,該模塊提供了非常豐富的方法用來(lái)處理文件和目錄,下面這篇文章主要給大家介紹了關(guān)于Python必知必會(huì)之os模塊的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • django 實(shí)現(xiàn)手動(dòng)存儲(chǔ)文件到model的FileField

    django 實(shí)現(xiàn)手動(dòng)存儲(chǔ)文件到model的FileField

    這篇文章主要介紹了django 實(shí)現(xiàn)手動(dòng)存儲(chǔ)文件到model的FileField,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python實(shí)現(xiàn)數(shù)字炸彈游戲程序

    python實(shí)現(xiàn)數(shù)字炸彈游戲程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)數(shù)字炸彈游戲程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • python 時(shí)間的訪問(wèn)和轉(zhuǎn)換 time示例小結(jié)

    python 時(shí)間的訪問(wèn)和轉(zhuǎn)換 time示例小結(jié)

    Python 的 time 模塊提供了各種與時(shí)間處理相關(guān)的功能,包括獲取當(dāng)前時(shí)間、操作日期/時(shí)間以及執(zhí)行與時(shí)間相關(guān)的各種其它功能,這篇文章主要介紹了python 時(shí)間的訪問(wèn)和轉(zhuǎn)換 time,需要的朋友可以參考下
    2024-05-05
  • Django restframework 源碼分析之認(rèn)證詳解

    Django restframework 源碼分析之認(rèn)證詳解

    這篇文章主要介紹了Django-restframework 源碼分析之認(rèn)證詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python中高級(jí)語(yǔ)法糖的使用示例詳解

    Python中高級(jí)語(yǔ)法糖的使用示例詳解

    Python?是一門簡(jiǎn)潔而強(qiáng)大的編程語(yǔ)言,具備許多高級(jí)語(yǔ)法糖(syntactic?sugar)功能,本文將介紹一些常見的Python高級(jí)語(yǔ)法糖,以及如何使用它們來(lái)提高代碼質(zhì)量和開發(fā)效率,需要的小伙伴可以參考下
    2024-01-01
  • 解決pytorch中的kl divergence計(jì)算問(wèn)題

    解決pytorch中的kl divergence計(jì)算問(wèn)題

    這篇文章主要介紹了解決pytorch中的kl divergence計(jì)算問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python中hash()函數(shù)之哈希值的奧秘詳解

    Python中hash()函數(shù)之哈希值的奧秘詳解

    hash()是Python 中的一個(gè)內(nèi)置函數(shù),用于計(jì)算對(duì)象的哈希值,哈希值是一個(gè)整數(shù),用于唯一標(biāo)識(shí)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于Python中hash()函數(shù)之哈希值奧秘的相關(guān)資料,需要的朋友可以參考下
    2024-06-06

最新評(píng)論

观塘区| 金秀| 昭觉县| 前郭尔| 繁峙县| 赤峰市| 稻城县| 深泽县| 含山县| 濮阳县| 古蔺县| 蚌埠市| 确山县| 长乐市| 黔江区| 安仁县| 惠水县| 定日县| 神木县| 丹东市| 武邑县| 芷江| 南雄市| 平凉市| 康马县| 营山县| 东兰县| 澄迈县| 虹口区| 南通市| 屯留县| 南投市| 日喀则市| 沙洋县| 三门峡市| 庐江县| 汉阴县| 蒙城县| 石阡县| 遵义县| 万载县|