Python脚本:利用MD5哈希删除指定文件夹内的重复图片

Hazel
Hazel
发布时间:2026-10-14 | 3人浏览过
原创

本文介绍如何使用Python脚本自动删除指定文件夹中的重复图片。通过hashlib库计算文件MD5值进行比对,结合os模块遍历目录并移除重复项。脚本包含日志记录功能,适用于处理一般大小的图片文件,帮助快速清理下载或抓取产生的冗余数据。

Python删除重复文件脚本实现

此前的文章曾介绍过从网络抓取图片的方法,导致将某个笑话网站的全部图片下载到本地。然而,在抓取过程中产生了大量重复内容,例如页面其他位置的图片以及重复发布的图片。为了解决这一问题,编写了一个Python脚本,用于自动删除指定文件夹内的重复图片。

一、方法和思路

1. 判定文件是否相同的方法:利用hashlib库提供的获取文件MD5值的功能,通过比对MD5值来判断图片是否一致。

2. 文件操作相关库:os库提供了多种文件操作功能,例如os.remove()用于删除指定文件,os.listdir()用于获取指定文件夹路径下的所有文件名列表。

实现思路:首先获取指定文件夹内的所有文件名,并将其转换为绝对路径列表。随后循环遍历每个文件的MD5值,一旦发现MD5值重复,即执行删除操作。

二、代码实现


import os 
import hashlib 
import logging 
import sys 
 
def logger(): 
 """ 获取logger""" 
 logger = logging.getLogger() 
 if not logger.handlers: 
 # 指定logger输出格式 
 formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s') 
 # 文件日志 
 file_handler = logging.FileHandler("test.log") 
 file_handler.setFormatter(formatter) # 可以通过setFormatter指定输出格式 
 # 控制台日志 
 console_handler = logging.StreamHandler(sys.stdout) 
 console_handler.formatter = formatter # 也可以直接给formatter赋值 
 # 为logger添加的日志处理器 
 logger.addHandler(file_handler) 
 logger.addHandler(console_handler) 
 # 指定日志的最低输出级别,默认为WARN级别 
 logger.setLevel(logging.INFO) 
 return logger 
 
def get_md5(filename): 
 m = hashlib.md5() 
 mfile = open(filename, "rb") 
 m.update(mfile.read()) 
 mfile.close() 
 md5_value = m.hexdigest() 
 return md5_value 
 
def get_urllist(): 
 #替换指定的文件夹路径即可 
 base = ("F:\\pythonFile\\煎蛋网\\无聊图\\jpg\\") 
 list = os.listdir(base) 
 urlList=[] 
 for i in list: 
 url = base + i 
 urlList.append(url) 
 return urlList 
 
if __name__ == '__main__': 
 log = logger() 
 md5List =[] 
 urlList =get_urllist() 
 for a in urlList: 
 md5 =get_md5(a) 
 if (md5 in md5List): 
  os.remove(a) 
  print("重复:%s"%a) 
  log.info("重复:%s"%a) 
 else: 
  md5List.append(md5) 
  # print(md5List) 
  print("一共%s张照片"%len(md5List)) 

可以通过日志功能查看具体哪些文件被判定为重复。需要注意的是,对于超大文件,MD5值的计算过程可能会发生变化或耗时较长,但该脚本足以处理一般大小的文件。只需替换脚本中的路径配置,即可在本地电脑上运行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表