Python 查找并删除重复文件

Python 查找并删除重复文件

在本文中,我们将介绍如何使用Python来查找并删除重复的文件。重复文件指的是文件名相同且内容相同的文件。

阅读更多:Python 教程

查找重复文件

要查找重复文件,我们需要遍历指定文件夹及其子文件夹中的所有文件,并对它们进行比较。对于相同的文件,我们可以使用哈希算法来判断它们的内容是否相同。

以下是一个示例代码,展示了如何查找重复文件:

import os
import hashlib

def get_file_hash(file_path):
    """计算文件的哈希值"""
    hash_md5 = hashlib.md5()
    with open(file_path, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

def find_duplicate_files(folder_path):
    """查找重复文件"""
    file_hash_dict = {}
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            file_hash = get_file_hash(file_path)
            if file_hash in file_hash_dict:
                file_hash_dict[file_hash].append(file_path)
            else:
                file_hash_dict[file_hash] = [file_path]

    duplicate_files = []
    for file_list in file_hash_dict.values():
        if len(file_list) > 1:
            duplicate_files.append(file_list)

    return duplicate_files


folder_path = '/path/to/folder'
duplicate_files = find_duplicate_files(folder_path)
for files in duplicate_files:
    print("Duplicate files:")
    for file in files:
        print(file)
    print()

在上述代码中,我们首先定义了一个get_file_hash函数,用于计算文件的哈希值。然后,我们定义了find_duplicate_files函数,该函数遍历指定文件夹中的所有文件,计算每个文件的哈希值,并将哈希值相同的文件归类为重复文件。最后,我们遍历所有的重复文件,打印出它们的文件路径。

删除重复文件

查找到重复文件后,我们可以根据需求选择删除它们。在删除文件之前,我们需要进行一定的确认,以避免误删。

以下是一个示例代码,展示了如何删除重复文件,同时提供了一些安全措施,确保不会误删原始文件:

import os
import hashlib
import shutil

def get_file_hash(file_path):
    """计算文件的哈希值"""
    hash_md5 = hashlib.md5()
    with open(file_path, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

def find_duplicate_files(folder_path):
    """查找重复文件"""
    file_hash_dict = {}
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            file_hash = get_file_hash(file_path)
            if file_hash in file_hash_dict:
                file_hash_dict[file_hash].append(file_path)
            else:
                file_hash_dict[file_hash] = [file_path]

    duplicate_files = []
    for file_list in file_hash_dict.values():
        if len(file_list) > 1:
            duplicate_files.append(file_list)

    return duplicate_files

def remove_duplicate_files(duplicate_files):
    """删除重复文件"""
    for files in duplicate_files:
        for i in range(1, len(files)):
            file_to_remove = files[i]
            print(f"Removing file: {file_to_remove}")
            os.remove(file_to_remove)


folder_path = '/path/to/folder'
duplicate_files = find_duplicate_files(folder_path)
remove_duplicate_files(duplicate_files)

在上述代码中,我们定义了一个remove_duplicate_files函数,用于删除重复文件。该函数接受一个重复文件列表作为输入,并删除除首个文件之外的其他文件。

在使用上述代码时,我们需要注意以下几点:

  • 请务必提前备份重要的文件,以防误删;
  • 在删除文件之前,最好先打印出要删除的文件路径,以便检查确认;
  • 删除文件时,请谨慎操作,并遵循相关法律法规。

总结

在本文中,我们介绍了如何使用Python来查找并删除重复文件。通过计算文件的哈希值,我们可以快速比较它们的内容是否相同。运用这种方法,我们可以轻松地清理磁盘空间,避免重复文件造成的冗余。

希望本文对您有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程