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

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

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

Python自動化辦公之刪除重復文件

思路介紹

兩層判斷:

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

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

源碼解說

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)的所有文件名,默認是升序排列,相同文件將會保留日期時間最新的
    all_files = Path(path).glob('*.*')

    # 降序排列,相同文件將會保留文件名最短的(即日期時間最久的)
    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列表用于存儲文件絕對路徑和md5值,作為數(shù)據(jù)字典的值
        name_and_md5 = [file, '']

        # 針對重復文件進行處理,生成字典存儲相關信息
        # 字典all_size中key是size,value是name_and_md5列表
        # 針對相同size的文件,再調(diào)用getmd5函數(shù),獲取文件的md5值
        # 文件size不同(不在all_size.keys()中),則自動判斷為不同的文件,予以保留
        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值存在,即文件重復,則刪除文件。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'刪除個數(shù):{total_delete}')


if __name__ == '__main__':
    main()

效果圖:

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

知識拓展

pathlib和os,os.path常用的函數(shù)對應關系

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  # 返回父級目錄

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

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

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

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

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

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

Path.unlink()  # 刪除文件

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

相關文章

最新評論