Python删除同一个文件夹下的重复文件
博客专区 > toddler 的博客 > 博客详情
Python删除同一个文件夹下的重复文件
toddler 发表于3年前
Python删除同一个文件夹下的重复文件
  • 发表于 3年前
  • 阅读 496
  • 收藏 11
  • 点赞 0
  • 评论 2

腾讯云 技术升级10大核心产品年终让利>>>   

#!/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



共有 人打赏支持
粉丝 10
博文 33
码字总数 21659
作品 1
评论 (2)
疯狂的小企鹅
文件一大。获取md5会占超大内存吧。推荐分片读取
toddler

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

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

嗯,没想到那么多呢
×
toddler
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: