文档章节

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

toddler
 toddler
发布于 2015/02/25 21:47
字数 214
阅读 525
收藏 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 编写简单的setup.py

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

lyrichu
2017/05/06
0
0
python 相对路径文件的操作

python项目中,如果pyton代码需要访问某个外部文件,该文件位于代码文件的某个相对路径位置,我们可以在代码中使用相对路径来访问该文件。 比如图中的代码结构: sample.py文件中,如果要访问...

xyh421
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day60-20180818-流利阅读笔记-待学习

钉钉:工作的归工作,生活的…也归工作? 毛西 2018-08-18 1.今日导读 你用过“钉钉”么?被公司要求使用钉钉的感受是如何的呢?这款阿里巴巴旗下的移动办公社交平台在弯道超车微信、为许多企...

aibinxiao
36分钟前
6
0
Kubernetes的HTTPS和证书问题,汇总

通过Kubernetes建立服务网站,需要干的事情和HTTPS和证书问题,汇总如下: 建立Nginx服务器 搞服务器第一步,Ubuntu 18.04设置静态IP 安装Nginx服务。 Kubernetes的deployment使用 创建服务,...

openthings
52分钟前
1
0
php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
今天
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
今天
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部