📜  使用Python查找重复文件(1)

📅  最后修改于: 2023-12-03 15:22:20.378000             🧑  作者: Mango

使用Python查找重复文件

当我们拥有大量文件时,有时可能会出现重复文件的情况。手动查找这些文件不仅费时,而且容易遗漏。Python 提供了一种快速、高效的方式来查找重复文件。

实现步骤
  1. 找到指定文件夹中的所有文件
  2. 计算所有文件的哈希值
  3. 将哈希值相同的文件标记为重复文件
步骤一:找到指定文件夹中的所有文件

Python 提供了 os 模块来访问操作系统的函数。我们可以使用 os.listdir() 函数获取一个指定目录下的所有文件名。

import os

def get_files(path):
    all_files = []
    for dirpath, dirnames, filenames in os.walk(path):
        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            all_files.append(file_path)
    return all_files

这个函数将返回指定目录下的所有文件路径,包括子目录中的文件。

步骤二:计算所有文件的哈希值

Python 提供了多种哈希算法,我们可以使用 hashlib 模块来完成哈希计算操作。

import hashlib

def hash_file(path):
    with open(path, 'rb') as f:
        hasher = hashlib.md5()
        buf = f.read()
        hasher.update(buf)
        return hasher.hexdigest()

这个函数将返回指定文件路径的哈希值。

步骤三:将哈希值相同的文件标记为重复文件

我们可以使用 Python 的字典来存储哈希值和文件路径的对应关系。如果哈希值有重复,说明这些文件是相同的。

def find_duplicate_files(path):
    files = get_files(path)
    file_dict = {}
    for file_path in files:
        file_hash = hash_file(file_path)
        if file_hash in file_dict:
            file_dict[file_hash].append(file_path)
        else:
            file_dict[file_hash] = [file_path]
    return [file_dict[key] for key in file_dict.keys() if len(file_dict[key]) > 1]

这个函数将返回重复文件的列表。列表的每一个元素都是一个包含相同哈希值的文件路径列表。

总结

Python 是一种快速、高效的语言,开发者可以使用 Python 轻松地实现一些常见的操作。使用 Python 来查找重复文件是一个很好的例子,它可以极大地提高我们的工作效率。