python选取文件夹,然后计算该文件夹下所有文件的md5值,并列出md5值相同的文件到log中
来源:互联网 发布:吉他视频教学软件 编辑:程序博客网 时间:2024/06/05 02:46
因为在处理手机相册的时候,发现有些照片保存了好多次,为了保证一张图片不被多次保存,所以想到通过计算图片md5值的方式来进行筛选。
图片的md5值计算,使用python非常方便。
执行该py之后,会有一个对话框,通过选择目录,即可遍历该目录及子目录下所有文件,计算出md5值,并将md5值重复的文件列出,从而可手动删除重复文件,保留一个即可。
以下是python源代码:
#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport hashlibimport datetimefrom Tkinter import *import tkFileDialogimport iodef get_file_md5(file_path):if not os.path.isfile(file_path):returnmyhash=hashlib.md5()f=file(file_path,'rb')while True:b = f.read(8096)if not b:breakmyhash.update(b)f.close()return myhash.hexdigest()#print file md5 value and time costeddef file_name(file_dir):log_file_path = os.path.dirname(os.path.realpath(__file__))py_name=os.path.basename(os.path.realpath(__file__))log_file_path = log_file_path + '\\' + py_name + '.log'print(log_file_path)log_file=io.open(log_file_path,'w',1048576,'utf-8');list_md5={'':[]}for root,dirs,files in os.walk(file_dir):for file in files:file_full_path=os.path.join(root,file)md5_val=get_file_md5(file_full_path)list_md5.setdefault(md5_val,[]).append(file_full_path)for key in list_md5.keys():if len(list_md5[key])>1:for value in list_md5[key]:line_data=key + '' + value + '\n'log_file.write(line_data)switch_line=u'\n'log_file.write(switch_line)log_file.close()starttime=datetime.datetime.now()file_dir_path=tkFileDialog.askdirectory()if file_dir_path.strip() != '':file_name(file_dir_path)endtime=datetime.datetime.now()print 'execute time: %ds'%((endtime-starttime).seconds)
阅读全文
0 0
- python选取文件夹,然后计算该文件夹下所有文件的md5值,并列出md5值相同的文件到log中
- C#遍历文件夹下所有文件通过MD5函数计算文件的MD5
- Python编写程序实现把某一文件夹下的所有文件重新命名为他的MD5值
- 打印出所有该目录下的文件和文件夹
- 打印出所有该目录下的文件和文件夹
- 【工具类】遍历扫描文件夹下所有文件并列出
- 如何在linux下快速生成当前目录下所有文件夹下所有文件的MD5
- 用python计算文件的md5值
- 用python计算文件的md5值
- 用Python计算文件的MD5值
- Python -- 计算文件的md5值
- python计算文件的MD5值
- python 计算文件的md5值实例
- 批量求出一个文件夹内所有文件的md5散列值
- Linux下计算文件的MD5值
- 版本差异对比(四)-- 计算压缩文件夹及文件的MD5值
- 获得指定文件夹下的子文件目录及子文件MD5值
- 计算文件的md5值
- STM8L相关功能配置
- ThinkPHP之支付宝网页支付(即时到账)
- 具备这样的思维,你才算入了大数据分析的门
- 程序的编译和链接过程
- Thinkphp之极光推送
- python选取文件夹,然后计算该文件夹下所有文件的md5值,并列出md5值相同的文件到log中
- 在linux上部署项目时遇到的坑
- ThinkPHP之比RBAC更好用的权限管理 auth认证
- ThinkPHP之七牛云储存
- nginx设置上传文件大小
- IIS下带中文搜索的问题
- Spring学习——Spring中定时器实现
- MySQL主从复制与读写分离
- 某政务网站性能优化