python删除文件夹下相同文件和无法打开的图片


Posted in Python onJuly 16, 2019

前天不小心把硬盘格式化了,丢了好多照片,后来用Recuva这款软件成功把文件恢复过来,可是恢复的文件中有好多重复的文件和无法打开的图片,所以写了两个python的小程序用来解决这个问题

删除相同文件:

#coding=utf-8
 
import os
import os.path
import Image
import hashlib
 
def get_md5(filename):
 m = hashlib.md5()
 mfile = open(filename, "rb")
 m.update(mfile.read())
 mfile.close()
 md5_value = m.hexdigest()
 return md5_value
 
if __name__ == '__main__':
 ipath = "E:\\20161019_photo"
 uipath = unicode(ipath, "utf8")
 
 for parent, dirnames, filenames in os.walk(uipath):
  md5_list = []
  #for dirname in dirnames: # 输出文件夹信息
   #print "parent is:" + parent
   #print "dirname is: " + dirname
  for filename in filenames:
   #print "parent is :" + parent
   #print "filename is:" + filename
   #print "md5_list is : "
 
   if(get_md5(os.path.join(parent, filename)) in md5_list):
    os.remove(os.path.join(parent, filename))
   else:
    md5_list.append(get_md5(os.path.join(parent, filename)))
   #print md5_list
   #md5 = []

删除无法打开文件:

#coding=utf-8
 
import os
import os.path
import Image
import hashlib
 
def get_md5(filename):
 m = hashlib.md5()
 mfile = open(filename, "rb")
 m.update(mfile.read())
 mfile.close()
 md5_value = m.hexdigest()
 return md5_value
 
if __name__ == '__main__':
 ipath = "E:\\20161019_photo"
 uipath = unicode(ipath, "utf8")
 for parent, dirnames, filenames in os.walk(uipath):
  for filename in filenames:
   name ,ext = os.path.splitext(filename)
   if((ext == ".png") or (ext == ".tif") or (ext == ".gif")):
    os.remove(os.path.join(parent, filename))
   else:
    if(ext == ".jpg"):
     try:
      fp = open(os.path.join(parent, filename), 'rb')
      img = Image.open(fp)
     except:
      fp.close()
      os.remove(os.path.join(parent, filename))
     else:
      continue

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

Python 相关文章推荐
python元组操作实例解析
Sep 23 Python
Python的Django框架中设置日期和字段可选的方法
Jul 17 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
python散点图实例之随机漫步
Aug 27 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
python安装numpy和pandas的方法步骤
May 27 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
基于FME使用Python过程图解
May 13 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
python 实现客户端与服务端的通信
Dec 23 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 #Python
python实现字符串完美拆分split()的方法
Jul 16 #Python
python如何删除文件中重复的字段
Jul 16 #Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 #Python
Python使用正则表达式分割字符串的实现方法
Jul 16 #Python
Python Django切换MySQL数据库实例详解
Jul 16 #Python
Python二维码生成识别实例详解
Jul 16 #Python
You might like
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP读取xml方法介绍
2013/01/12 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
php文件上传的简单实例
2013/10/19 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
python 合并文件的具体实例
2013/08/08 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python实现取余操作的简单实例
2020/08/16 Python
python元组拆包实现方法
2021/02/28 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
店长岗位的工作内容
2013/11/12 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
基层工作经验证明样本
2014/11/16 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
解析Java异步之call future
2021/06/14 Java/Android