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来查找并删除重复文件。通过计算文件的哈希值,我们可以快速比较它们的内容是否相同。运用这种方法,我们可以轻松地清理磁盘空间,避免重复文件造成的冗余。
希望本文对您有所帮助!