重复文件查找王免费下载,快速找出电脑里的重复文件并删除

今天跟大家伙儿聊聊我最近搞的一个小玩意儿,我自己叫它“重复文件查找王”。这名字听着霸气,就是个小脚本,但解决了我一个大烦恼!

事情是这样的,我这电脑用久了,各种文件乱七八糟,照片、视频、文档,啥都有。时间一长,我自己都不知道哪些是重复的,硬盘空间眼看着越来越少,这可不行!

我也想着用现成的软件,网上搜了一堆,像啥“文件管家”、“文件全能王”之类的,下载了好几个试了试,要么广告太多,要么扫描速度慢得要死,要么就是界面复杂,用起来不顺手。我一咬牙,寻思着自己撸一个!

说干就干!我先捋了捋思路,这重复文件查找,核心就是比较文件嘛最简单的方法就是比较文件名,但文件名一样的,内容不一定一样。还得比较文件大小,如果文件名和大小都一样,那基本上就是重复的了。但是,为了更保险,还得加上校验值,比如MD5或者SHA1,这样才能确保万无一失。

我选了Python,这玩意儿用起来方便,库也多。我写了个函数,用来遍历指定目录下的所有文件。这步很简单, 一把梭!

import os

def get_all_files(dir_path):

file_list = []

for root, dirs, files in *(dir_path):

for file in files:

file_path = *(root, file)

file_*(file_path)

return file_list

然后,我写了个函数,用来计算文件的MD5值。这也不难,打开文件,读取内容,然后用hashlib 算一下就行了。

import hashlib

def calculate_md5(file_path):

with open(file_path, 'rb') as f:

md5_obj = *5()

while True:

chunk = *(4096)

if not chunk:

break

md5_*(chunk)

return md5_*()

有了这两个函数,接下来就好办了。我先遍历所有文件,把文件名、大小、MD5值都存到一个字典里。然后,再遍历一遍,比较文件名和大小,如果一样,就比较MD5值,如果MD5值也一样,那就肯定是重复文件了!

def find_duplicate_files(dir_path):

file_dict = {}

all_files = get_all_files(dir_path)

for file_path in all_files:

file_name = *(file_path)

file_size = *(file_path)

file_md5 = calculate_md5(file_path)

key = (file_name, file_size)

if key in file_dict:

file_dict[key].append((file_path, file_md5))

else:

file_dict[key] = [(file_path, file_md5)]

duplicate_files = []

for key, value in file_*():

if len(value) > 1:

md5_set = set()

for file_path, file_md5 in value:

if file_md5 in md5_set:

duplicate_*(file_path)

else:

md5_*(file_md5)

return duplicate_files

我写了个主函数,调用上面的函数,把重复文件打印出来,或者直接删除。为了安全起见,我一开始没敢直接删除,只是打印出来,让我自己确认一下。

if __name__ == '__main__':

dir_path = input("请输入要查找的目录:")

duplicate_files = find_duplicate_files(dir_path)

if duplicate_files:

print("找到以下重复文件:")

for file_path in duplicate_files:

print(file_path)

else:

print("没有找到重复文件。")

跑了一下,效果还真不错!我一下子找到了好多重复的照片和视频,都是以前备份的时候没注意,搞重复了。手动删了一部分,硬盘空间立马就释放出来了!

这个小脚本还有很多可以改进的地方。比如,可以加上图形界面,方便操作;可以支持更多的校验算法,提高准确性;还可以支持断点续扫,避免扫描大目录时中断。以后有空了,再慢慢完善!

这回自己动手写“重复文件查找王”,还是很有成就感的。不仅解决了实际问题,还学到了不少东西。以后遇到类似的需求,也能更快地搞定了!