自动删除目录下重复的文件(可以自定义类型)

27 篇文章 0 订阅
19 篇文章 0 订阅

前言

最近整理nas群晖的文件,发现影音库里面很多重复的资源,自己就写了一个python脚本自动的处理。

import os
import hashlib
# 只删除以下列表中的重复文件类型.如果想删除其他类型的文件,自己添加一下就行了
file_type = ['.jpg', '.jpeg', '.png', '.gif', '.psd', '.bmp', '.webp', '.mp4', '.mkv', '.avi', '.mov', 'mpeg', 'mpg',
              '.rar', '.zip','img']
check_files = []
def remove_reapt_files():
    for root, dirs, files in os.walk(r'/Users/yuqianjun/Downloads/'):
        #这个路径/Users/yuqianjun/Downloads/就是你需要 查重的路径;自己定义就好了
        for name in files:
            print(name)
            p_type = os.path.splitext(os.path.join(root, name))[1]
            if p_type in file_type:
                check_files.append(os.path.join(root, name))
        for name in dirs:
            p_type = os.path.splitext(os.path.join(root, name))[1]
            if p_type in file_type:
                check_files.append(os.path.join(root, name))
    files_dict = {}
    r_index = 0
    print('Fiels Num:%s' % len(check_files))
    for value in check_files:
        md5_hash = hashlib.md5()
        try:
            with open(value, "rb+") as f:
                for byte_block in iter(lambda: f.read(4096), b""):
                    md5_hash.update(byte_block)
                file_md5 = md5_hash.hexdigest()
                print('Check file MD5:%s' % value)
            if files_dict.get(file_md5) is None:
                files_dict[file_md5] = value
            else:
                d_path = files_dict[file_md5]
                d_path_stats = os.stat(d_path)
                file_stats = os.stat(value)
                d_time = d_path_stats.st_ctime
                f_time = file_stats.st_ctime
                if d_time > f_time:
                    os.remove(d_path)
                    files_dict[file_md5] = value
                    print('Delete File:', d_path)
                    r_index += 1
                else:
                    os.remove(value)
                    print('Delete File:', value)
                    r_index += 1
        except Exception as e:
            pass
            print('File does not exist or has been deleted')
    print('File Count:%s, Repeat Files Num:%s. All deleted!' %( len(check_files),str(r_index)))
if __name__ == '__main__':
    remove_reapt_files()

重复文件查找王”,一款为您以最快的速度找出指定目录中内容重复文件列表,便于您据此清理文件,减少重复文件对磁盘空间的占用。本工具的主要功能: 提供8种匹配方法,我们称之为匹配准确度的8层,它们是: 第0层,文件名中包含指定的文字 第1层,文件名相同,文件后缀名可以不同 第2层,文件名相同,文件后缀名也必须相同 第3层,文件名相同,文件后缀名相同,文件大小也必须相同 第4层,文件的大小相同,CRC校验值也必须相同 第5层,文件名相同,文件的大小相同,CRC校验值也必须相同 第6层,文件的MD5校验值必须相同 第7层,文件名相同,文件的MD5校验值必须相同 这些匹配算法,已经能够满足绝大多数的用户的日常需要了。在查找的文件总数及内容完全相同的情况下,这7种算法,按照从小到大的顺序,查找速度递减(即占用的时间递增),但是查找的准确度递增。默认的查找方式是第4层。设置方法:“高级设置” --> “搜索方式”。 本软件的搜索算法经过了精心的整理和优化,在和国内外已有的、号称最优秀的同类软件相比时,本软件的速度仍然是最快的。 对于硬盘空间快速增加的今天,查找速度的优化是极其重要的。 在信息爆炸的年代,您有没有觉得"垃圾信息"也在同样地爆炸式增长呢?在一台计算机上的重复文件,基本上也可以认为是垃圾信息,因为它们一方面占用了您宝贵的IT投资资源,另一方面,对于您进行文件版本控制也是极端的不利。本软件就能为您解决这些头疼的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值