📅  最后修改于: 2023-12-03 14:49:50.017000             🧑  作者: Mango
你是否曾经因为电脑上的重复文件烦恼?如果你想要一种简单有效的方法来帮你删除重复文件,那么可以考虑使用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(".")
以上代码中,我们遍历了指定目录下的所有文件,并计算了每个文件的哈希值。如果哈希值已经在字典中出现过,说明这是一份重复文件,我们将其删除并打印出相关信息。
删除文件是一个有风险的操作,因此在运行脚本之前,一定要备份好你的文件。此外,这个脚本只能删除内容相同但文件名不同的文件,如果两个文件名相同但内容不同,这个脚本无法处理。因此,在删除文件之前,一定要确认文件内容确实完全相同。