文档章节

Python删除同一个文件夹下的重复文件

toddler
 toddler
发布于 2015/02/25 21:47
字数 214
阅读 548
收藏 11
#!/usr/bin/env python
#coding: utf-8

import md5
import os
from time import clock as now


def getmd5(filename):
    file_txt = open(filename, 'rb').read()
    m = md5.new(file_txt)
    return m.hexdigest()


def main():
    path = u'C:\\aa\bb\cc\dd'
    all_md5 = {}
    all_size = {}
    total_file = 0
    total_delete = 0
    start = now()
    for file in os.listdir(path):
        total_file += 1
        real_path = os.path.join(path, file)
        if os.path.isfile(real_path) == True:
            size = os.stat(real_path).st_size
            name_and_md5 = [real_path, '']
            if size in all_size.keys():
                new_md5 = getmd5(real_path)
                if all_size[size][1] == '':
                    all_size[size][1] = getmd5(all_size[size][0])
                if new_md5 in all_size[size]:
                    total_delete += 1
                    print u'删除', file
                    try:
                        os.remove(os.path.join(path, file))
                    except:
                        print 'No such file: %s' % file
                else:
                    all_size[size].append(new_md5)
            else:
                all_size[size] = name_and_md5
    end = now()
    time_last = end - start
    print u'文件总数: ', total_file
    print u'删除个数: ', total_delete
    print u'耗时: ', time_last, '秒'


if __name__ == '__main__':
    main()

参考:http://developer.51cto.com/art/201205/334378.htm

原文没有执行删除文件的操作:

try:
    os.remove(os.path.join(path, file))
except:
    print 'No such file: %s' % file

还是看官方文档靠谱

https://docs.python.org/2/library/os.html?highlight=os.remove#os.remove



© 著作权归作者所有

共有 人打赏支持
toddler
粉丝 12
博文 33
码字总数 21659
作品 1
济南
QA/测试工程师
私信 提问
加载中

评论(2)

toddler
toddler

引用来自“疯狂的小企鹅”的评论

文件一大。获取md5会占超大内存吧。推荐分片读取

嗯,没想到那么多呢
疯狂的小企鹅
疯狂的小企鹅
文件一大。获取md5会占超大内存吧。推荐分片读取
创建Python2和Python3的虚拟环境

一、windows上安装 1.安装python 分别安装了Python2和Python3 python3.7默认安装目录 安装目录里的python.exe,pip.py自定是否修改 2.安装virtualenv和virtualenvwrapper-win 3.修改虚拟环境 ...

xiaoge2016
07/30
0
2
virtualenvwrapper

### virtualenv主要目的是创建一个独立的python开发环境,在创建的虚拟环境中,可以导入系统安 装的zmq、mongo等一些需要的库(需要在虚拟环境安装相应的pyzmq,pymongo),这样可以根据每个...

boy12626
06/29
0
0
Python基础班每日整理(一)

01_Linux基础 1.操作系统的作用? 操作系统是配置在计算机硬件上的第一层软件,主要作用是管理好硬件设备。 2.Linux中根目录和家目录分别用什么表示? /表示根目录、~表示家目录 3.Linux中相...

我是小谷粒
06/28
0
0
Python知识点总结篇(三)

文件操作 对文件操作流程 - 打开文件,得到文件句柄并赋值给一个变量; - 通过句柄对文件进行操作; - 关闭文件; :自动关闭文件; 文件操作之 模式匹配与正则表达式 正则表达式:简称regex,...

村雨1943
10/03
0
0
python 编写简单的setup.py

  学习python也已经有一段时间了,发现python作为脚本语言一个很重要的特点就是简单易用,而且拥有巨多的第三方库,几乎方方面面的库都有,无论你处于哪个行业,想做什么工作,几乎都能找到...

lyrichu
2017/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
15
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部