此程序主要是针对某个目录下的全部文件进行筛选,会删除重复的文件。
原理很简单,会计算每个文件的哈希,将哈希存入一个字典,文件名对应哈希。
import os
import hashlib
def hash_file(filename):
"""Return the SHA-1 hash
of the file content."""
h = hashlib.sha1()
with open(filename, 'rb') as f:
while True:
chunk = f.read(4096)
if not chunk:
break
h.update(chunk)
return h.hexdigest()
def remove_duplicate_files(path):
"""Remove duplicates files in the directory."""
files_hash = {}
i=0
j=0
sum=len(os.listdir(path))
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
j=j+1
print("执行进度为:",100*j/sum,"%")
file_path = os.path.join(dirpath, filename)
file_hash = hash_file(file_path)
if file_hash in files_hash:
os.remove(file_path)
i=i+1
# print(i)
else:
files_hash[file_hash] = file_path
print("文件总数为:",sum)
print("此处处理的重复文件数目为:",i)
在使用的时候直接调用下面那个函数即可,传入参数为目录路径。
例如下面这样:
remove_duplicate_files("Y:\图片合集")
当然,你也可以将程序打包为一个exe文件,甚至为它添加简单的页面,让非计算机专业的人也能轻易使用。