python3 编写超简单的重复文件扫描工具

简介: 参考我之前的文章(python3 编写简单的扫描相同文件工具)做的简化代码import os,json,codecsimport hashlib##############_path = ["I:\\大电影","H:\\小电影","J:...

参考我之前的文章(python3 编写简单的扫描相同文件工具)做的简化

代码

import os,json,codecs
import hashlib
##############

_path = ["I:\\大电影","H:\\小电影","J:\\电影"]  # 路径 (自定义)
#读取大文件的时候如果直接读取所有可能就很慢,这里示例就读取部分
_read_s=1024*1024 #截取开始大小
_read_e=1024*1024*5#截取结束大小
########## 
def wrJson(path,jsonMap):#写入json
    f= codecs.open(path,'w',"utf-8") 
    f.write(json.dumps(jsonMap,ensure_ascii=False))
    f.close() 
     
    
def getFileMd5(files):  # 获取Md5
    srcl = open(files, 'rb')
    m2 = hashlib.md5()
    m2.update(srcl.read(_read_e)[_read_s:_read_e])
    srcl.close()
    return m2.hexdigest()

_size_map1 = {}  # 第一次过滤
_size_map2 = {}  # 第二次过滤
_size_map3 = {}  # 第三次过滤

#第一次根据大小进行分组
def fileFilter1(path): 
    if os.path.isdir(path):
        files = os.listdir(path)
        for f in files:
            p = path + "\\" + f
            fileFilter1(p)
    else:
        s = os.path.getsize(path)
        ###自定义过滤 -s
        if '.psd' in path: return #后缀过滤示例
        if s<1024*1024*200:return#示例200M的大文件
        ###自定义过滤-e
        if not (s in _size_map1.keys()):
            _size_map1[s] = {"list": [], "count": 0}
        _size_map1[s]["list"].append(path)
        _size_map1[s]["count"] += 1

#第二次根据大小进行分组
def fileFilter2():
    for k in _size_map1:
        i = _size_map1[k]
        if i["count"] > 1:
            for p in i["list"]:
                h=getFileMd5(p)
                if not (h in _size_map2.keys()):
                    _size_map2[h] = {"list": [], "count": 0,"size":k}
                _size_map2[h]["list"].append(p)
                _size_map2[h]["count"] += 1
                
#第三次过滤出分组数量大于1的,就当做是重复的
def fileFilter3():
    for k in _size_map2:
        i = _size_map2[k]
        if i["count"] > 1: 
            _size_map3[str(k)]=i
            
for p in _path:
    fileFilter1(p)
fileFilter2()
del _size_map1
fileFilter3()
del _size_map2
wrJson("./test.json",_size_map3)
print("---->over")

代码简单我就不详细说明了..

相关文章
|
1月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
533 2
|
1月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
2月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
177 92
|
19天前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
1月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
158 3
|
2月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
512 1
|
1月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
211 0
|
2月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
109 0
|
2月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制
|
2月前
|
安全 API 数据安全/隐私保护

推荐镜像

更多