• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 删除目录下相同文件的python代码(逐级优化)

删除目录下相同文件的python代码(逐级优化)

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 文件目录,python遍历文件目录,python 获取目录文件,python 目录下文件,python 当前目录等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这两天闲来无事在百度上淘了点图片,不多,也就几万张吧,其中有不少美女图片奥!哈哈!这里暂且不说图片是怎么获得的,咱聊聊得到图片以后发生的事。
遇到的第一个问题就是有些图片没有后缀名。在windows下,没有后缀名的文件是不能正确被识别的,没有预览,打开时还要选择打开方式,费劲!这个问题比较容易解决,给每个图片加上后缀名就是了。没有后缀名的图片也不多,不到1000张吧,一张一张地改很麻烦,还好我是学计算机的,上午写了个程序批量修改http://www.jb51.net/article/30400.htm。这个问题就算解决了。接下来又遇到了一个新问题:图片多了,难免出现重复的,有些图片完全一样,没有必要都留着,我就想把所有的重复图片都删除。

让我们来分析一下这个问题:首先,文件个数非常多,手工查找是不现实的,再说,单凭我们肉眼,在几千张图片里面找到完全相同的难度也是很大的。如果不是图片而是其他文档,在不能预览的情况下要正确区分是很困难的。所以要用程序实现。那么用程序怎么实现呢?根据什么判断两个文件完全相同呢?首先,根据文件名判断是靠不住的,因为文件名可以被随意更改,但文件内容不变。再说在同一个文件夹下面,也不可能出现两个完全相同的文件名,操作系统不允许的。还有一种方法就是根据文件大小来判断,这不失为一种好办法,但是,文件大小相同的图片可能不一样。再说图片一般都比较小,超过3M的基本没有,大部分不够1M,如果文件夹下面文件特别多,出现大小相同的的文件可能性是相当大的。所以单凭文件大小来比较不靠谱。还有一种方法是读取每张图片的内容,然后比较这个图片的内容和其他图片是否完全相同,如果内容相同那么这两张图片肯定是完全相同的。这种方法看起来是比较完美的,让我们来分析一下他的时空效率:首先每张图片的内容都要和其他图片进行比较,这就是一个二重循环,读取的效率低,比较的效率更低,所有的都比较下来是非常费时的!内存方面,如果预先把所有图片读取到内存可以加快文件的比较效率,但是普通计算机的内存资源有限,如果图片非常多,好几个G的话,都读到内存是不现实的。如果不把所有的文件读取到内存,那么每比较一次之前就要先读取文件内容,比较几次就要读取几次,从硬盘读取数据是比较慢的,这样做显然不合适。那么有没有更好的方法呢?我冥思苦想,绞尽脑汁,最后想到了md5。md5是什么?你不知道吗?额,你火星了,抓紧时间duckduckgo吧!也许你会问,md5不是加密的吗?和我们的问题有关系吗?问得好!md5可以把任意长度的字符串进行加密后形成一个32的字符序列,包括数字和字母(大写或小写),因为字符串任何微小的变动都会导致md5序列改变,因此md5可以看作一个字符串的‘指纹'或者‘信息摘要',因为md5字符串总共有3632个,所以两个不同的字符串得到一个相同的md5概率是很小的,几乎为0,同样的道理,我们可以得到每个文件的md5,若干文件的md5相同的话就基本上可以肯定两个文件是相同的,因为md5相同而文件不同的概率太小了,基本可以忽略,这样我们就可以这样做:得到每个文件的md5,通过比较md5是否相同我们就可以确定两张图片是否相同。下面是代码实现,python的

时间效率怎样呢?看下图:

 

您可能想查找下面的文章:

  • Python实现遍历目录的方法【测试可用】
  • Python获取文件所在目录和文件名的方法
  • Python获取文件所在目录和文件名的方法
  • Python遍历目录中的所有文件的方法
  • Python读取一个目录下所有目录和文件的方法
  • Python遍历目录中的所有文件的方法
  • 在Python中移动目录结构的方法
  • Python实现将目录中TXT合并成一个大TXT文件的方法
  • python检测是文件还是目录的方法
  • python获取目录下所有文件的方法

相关文章

  • python paramiko实现ssh远程访问的方法
  • Mac下Supervisor进程监控管理工具的安装与配置
  • Python中数字以及算数运算符的相关使用
  • Python编程中用close()方法关闭文件的教程
  • Python求导数的方法
  • 简单的连接MySQL与Python的Bottle框架的方法
  • 使用Python从有道词典网页获取单词翻译
  • python刷投票的脚本实现代码
  • python实现多线程采集的2个代码例子
  • python动态网页批量爬取

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python selenium文件上传方法汇总
    • 在Python 3中实现类型检查器的简单方法
    • python益智游戏计算汉诺塔问题示例
    • Python getopt模块处理命令行选项实例
    • python33 urllib2使用方法细节讲解
    • Python2.x中str与unicode相关问题的解决方法
    • python生成日历实例解析
    • Python 开发Activex组件方法
    • 低版本中Python除法运算小技巧
    • tensorflow模型保存、加载之变量重命名实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有