python用哈希删除文件夹中重复的图片
写在前面:删除的不完全精确,但是在可以接受的范围内,有误删的情况。所以,删之前,要备份!!!!windows下可用,linux修改文件夹即可!
安装包 pip install Pillow imagehash
代码
import os
from PIL import Image
import imagehash
def find_and_remove_duplicates(image_folder):
seen_hashes = set()
# 遍历文件夹中的所有文件
for filename in os.listdir(image_folder):
file_path = os.path.join(image_folder, filename)
# 确保是文件并且是图像
if os.path.isfile(file_path):
try:
# 打开图像并计算哈希值(使用 perceptual hash)
img = Image.open(file_path)
hash_value = imagehash.phash(img)
# 检查哈希值是否已经存在
if hash_value in seen_hashes:
# 如果存在,删除该文件
os.remove(file_path)
print(f"删除重复文件: {file_path}")
else:
# 如果不存在,添加到集合中
seen_hashes.add(hash_value)
except Exception as e:
print(f"处理文件 {file_path} 时发生错误: {e}")
# 指定要检查重复的文件夹
image_folder = r"E:\delete"
find_and_remove_duplicates(image_folder)