📅  最后修改于: 2023-12-03 15:22:20.378000             🧑  作者: Mango
当我们拥有大量文件时,有时可能会出现重复文件的情况。手动查找这些文件不仅费时,而且容易遗漏。Python 提供了一种快速、高效的方式来查找重复文件。
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 来查找重复文件是一个很好的例子,它可以极大地提高我们的工作效率。