首页 > 编程知识 正文

Python去重复文件

时间:2023-11-20 01:07:34 阅读:288671 作者:QLHW

本文将从多个方面介绍Python如何对重复文件进行去除,同时提供详细的代码实现。

一、相同文件的判断

在Python中,可以使用hashlib模块中的md5()方法对文件进行哈希值计算,从而得到文件的唯一标识。

import hashlib

def get_file_md5(file_path):
    m = hashlib.md5()
    with open(file_path, 'rb') as f:
        while True:
            data = f.read(1024)
            if not data:
                break
            m.update(data)
    return m.hexdigest()

通过此方法计算得到的哈希值可以用来比较两个文件是否一致。

二、遍历目录下的所有文件

使用os模块中的walk()方法可以遍历目录下的所有文件及子目录。

import os

def get_files_list(dir_path):
    files_list = []
    for root, dirs, files in os.walk(dir_path):
        for file in files:
            file_path = os.path.join(root, file)
            files_list.append(file_path)
    return files_list

通过此方法可以得到目录下的所有文件列表。

三、去重复文件

通过对文件进行哈希值计算和比较,可以得到重复文件的列表。

def find_duplicate_files(dir_path):
    files_list = get_files_list(dir_path)
    file_md5_dict = {}
    duplicate_files = []
    for file_path in files_list:
        file_md5 = get_file_md5(file_path)
        if file_md5 in file_md5_dict:
            if file_path not in duplicate_files and file_md5_dict[file_md5] not in duplicate_files:
                duplicate_files.append(file_path)
                duplicate_files.append(file_md5_dict[file_md5])
        else:
            file_md5_dict[file_md5] = file_path
    return duplicate_files

通过此方法可以得到重复文件的绝对路径列表。

四、删除重复文件

通过os模块中的remove()方法可以删除指定文件。

def remove_duplicate_files(dir_path):
    duplicate_files = find_duplicate_files(dir_path)
    for file_path in duplicate_files:
        os.remove(file_path)

通过此方法可以实现自动删除重复文件。

五、总结

本文详细介绍了Python如何对重复文件进行去除,通过哈希值计算和比较可以得到重复文件的列表。同时也提供了实现自动删除重复文件的方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。