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

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

本文介绍如何使用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。