Python :check大文件或者文件夹中所有文件MD5值
2017-12-14 15:34
791 查看
用
以下代码可以做到:
亲测,,,很好用
hashlib.md5获得打开文件的md5值,但是当文件很大的时候,比如好几个G,就会吃掉过多的内存,有没有办法在不打开文件的情况下,获得大文件的md5值呢?或者给出特定文件夹,check出文件夹中所有文件的MD5值并且写入特定文件中???
以下代码可以做到:
from hashlib import md5 import time import os def calMD5(str): #check string的MD5值 m = md5() m.update(str) return m.hexdigest() def calMD5ForFile(file): #check文件的MD5值 statinfo = os.stat(file) if int(statinfo.st_size)/(1024*1024) >= 1000 : print ("File size > 1000, move to big file...") return calMD5ForBigFile(file) m = md5() f = open(file, 'rb') m.update(f.read()) f.close() return m.hexdigest() def calMD5ForFolder(dir,MD5File): #check文件夹的MD5值 outfile = open(MD5File,'w') for root, subdirs, files in os.walk(dir): for file in files: filefullpath = os.path.join(root, file) """print filefullpath""" filerelpath = os.path.relpath(filefullpath, dir) md5 = calMD5ForFile(filefullpath) print(md5) outfile.write(filerelpath+"\t\t******-----------******\t\t"+md5+"\n") outfile.close() def calMD5ForBigFile(file): #check大文件的MD5值 m = md5() f = open(file, 'rb') buffer = 8192 # why is 8192 | 8192 is fast than 2048 while 1: chunk = f.read(buffer) if not chunk : break m.update(chunk) f.close() return m.hexdigest() checkmd5 = calMD5ForFolder(r'D:\software',r'C:\Users\Desktop\a.txt') print(checkmd5)
亲测,,,很好用
相关文章推荐
- python选取文件夹,然后计算该文件夹下所有文件的md5值,并列出md5值相同的文件到log中
- python2.7.3 统计某个文件夹下所有文件或者某个文件的行数
- 使用某个文件夹下的所有文件去替换另一个文件夹下及其子文件夹下存在的同名文件(Python实现)
- 【13】python列表去重/寻找一个文件夹中的所有文件/函数返回多个值
- python 遍历文件夹下面所有的文件
- python遍历文件夹中的所有jpg文件
- python删除文件夹及文件夹内所有文件
- python_批量获取指定文件夹下的所有文件的厂商信息
- python实现批量获取指定文件夹下的所有文件的厂商信息
- 如何批量获取文件夹内的所有文件以及文件夹名 汇总到TXT或者EXL?
- python 获取指定文件夹下所有文件名称并写入列表
- [置顶] win32命令行小程序获取指定文件夹或者目录下面的所有文件大小,文件数量,目录数量
- python列出文件夹下所有文件的四个方法
- Python计算一个目录下的所有文件的md5值,在Linux系统下面
- Linux 计算某文件夹下的所有文件的md5值
- asp.net 删除文件夹内的所有文件 或者单个文件 代码
- python练习(遍历所有文件夹及文件)
- python下遍历文件夹中所有文件
- python查找指定文件夹下所有文件并按修改时间倒序排列
- Python:遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序