python删除本地夹里重复文件的方法


Posted in Python onNovember 19, 2020

上次的博文主要说了从网上下载图片,于是我把整个笑话网站的图片都拔下来了,但是在拔取的图片中有很多重复的,比如说页面的其他图片、重复发布的图片等等。所以我又找了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 相关文章推荐
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
Python求导数的方法
May 09 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
Python上下文管理器和with块详解
Sep 09 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
解决python中无法自动补全代码的问题
Dec 04 Python
Python如何筛选序列中的元素的方法实现
Jul 15 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
Python机器学习之逻辑回归
May 11 Python
Python处理命令行参数模块optpars用法实例分析
May 31 #Python
python筛选出两个文件中重复行的方法
May 31 #Python
python删除文本中行数标签的方法
May 31 #Python
Python使用wget实现下载网络文件功能示例
May 31 #Python
Python使用progressbar模块实现的显示进度条功能
May 31 #Python
python调用Matplotlib绘制分布点并且添加标签
May 31 #Python
python批量修改文件编码格式的方法
May 31 #Python
You might like
php学习之 数组声明
2011/06/09 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
初一学生评语大全
2014/04/24 职场文书
校园环保标语
2014/06/13 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
Pandas数据结构之Series的使用
2022/03/31 Python
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技