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 相关文章推荐
动态创建类实例代码
Oct 07 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
17个Python小技巧分享
Jan 23 Python
tensorflow中next_batch的具体使用
Feb 02 Python
pandas表连接 索引上的合并方法
Jun 08 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
jupyter lab文件导出/下载方式
Apr 22 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
python里反向传播算法详解
Nov 22 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
解析zend Framework如何自动加载类
2013/06/28 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
C面试题
2015/10/08 面试题
EJB的角色和三个对象
2015/12/31 面试题
大学本科毕业生的自我鉴定
2013/11/26 职场文书
小学毕业感言150字
2014/02/05 职场文书
司法所长先进事迹
2014/06/02 职场文书
大学生党性分析材料
2014/12/19 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
环保主题班会教案
2015/08/13 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
Mysql中存储引擎的区别及比较
2021/06/04 MySQL