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中lambda的用法及其与def的区别解析
Jul 28 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
python覆盖写入,追加写入的实例
Jun 26 Python
Python绘制股票移动均线的实例
Aug 24 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
Python使用正则表达式实现爬虫数据抽取
Aug 17 Python
python 代码运行时间获取方式详解
Sep 18 Python
python 6种方法实现单例模式
Dec 15 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
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
python的正则表达式re模块的常用方法
2013/03/09 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python中的id()函数指的什么
2017/10/17 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
HTML5标签使用方法详解
2015/11/27 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
婚前财产公证书
2014/04/10 职场文书
爱心捐助倡议书
2014/05/19 职场文书
人事任命书范文
2014/06/04 职场文书
计生个人工作总结
2015/02/28 职场文书
Django操作cookie的实现
2021/05/26 Python