📜  使用Python删除重复文件(1)

📅  最后修改于: 2023-12-03 14:49:50.017000             🧑  作者: Mango

使用Python删除重复文件

你是否曾经因为电脑上的重复文件烦恼?如果你想要一种简单有效的方法来帮你删除重复文件,那么可以考虑使用Python编写一个脚本来自动化这个任务。

实现思路

删除重复文件的基本思路是,遍历指定目录下的所有文件,然后找出相同文件名但内容不同的文件进行删除。为了实现这个思路,我们可以利用Python的os库来遍历文件,使用哈希函数来计算文件内容的摘要值,然后将摘要值相同的文件视为重复文件进行处理。

代码实现

首先,我们需要导入os和hashlib两个库:

import os
import hashlib

然后,我们需要编写一个遍历指定目录下所有文件的函数:

def find_files(dir_path):
    files = []
    for dir_name, _, file_list in os.walk(dir_path):
        for file_name in file_list:
            files.append(os.path.join(dir_name, file_name))
    return files

接下来,我们需要编写一个计算哈希值的函数:

def compute_hash(file_path):
    hash_md5 = hashlib.md5()
    with open(file_path, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

通过计算哈希值,我们可以将文件内容抽象为一个字符串,这样可以更方便地进行比较。

最后,我们可以编写一个主函数来调用以上两个函数,删除重复文件:

def main(dir_path):
    hash_dict = {}
    for file_path in find_files(dir_path):
        file_hash = compute_hash(file_path)
        if file_hash not in hash_dict:
            hash_dict[file_hash] = file_path
        else:
            os.remove(file_path)
            print(f"Removed duplicate file: {file_path}")

if __name__ == "__main__":
    main(".")

以上代码中,我们遍历了指定目录下的所有文件,并计算了每个文件的哈希值。如果哈希值已经在字典中出现过,说明这是一份重复文件,我们将其删除并打印出相关信息。

注意事项

删除文件是一个有风险的操作,因此在运行脚本之前,一定要备份好你的文件。此外,这个脚本只能删除内容相同但文件名不同的文件,如果两个文件名相同但内容不同,这个脚本无法处理。因此,在删除文件之前,一定要确认文件内容确实完全相同。