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 相关文章推荐
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
python pandas 如何替换某列的一个值
Jun 09 Python
Python中Proxypool库的安装与配置
Oct 19 Python
python实现两张图片的像素融合
Feb 23 Python
如何通过python画loss曲线的方法
Jun 26 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
python列表返回重复数据的下标
Feb 10 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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学习的路线图
2013/07/10 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
javascript的函数
2007/01/31 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
jQuery事件用法详解
2016/10/06 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python使用Image处理图片常用技巧分析
2015/06/01 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python发展简史 Python来历
2019/05/14 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
销售副总经理岗位职责
2013/12/11 职场文书
广告词串烧
2014/03/19 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2014年教务工作总结
2014/12/03 职场文书
先进人物事迹材料
2014/12/29 职场文书
实施意见格式范本
2015/06/05 职场文书
驻村工作简报
2015/07/20 职场文书
2015年中秋节主持词
2015/07/30 职场文书
行为习惯主题班会
2015/08/14 职场文书
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript