Python的学习(三十) ---- Python实现文件md5校验
来源:互联网 发布:淘宝网店卖衣服 编辑:程序博客网 时间:2024/05/29 05:10
Linux下校验文件MD5值,最简单的方法就是执行md5sum命令
md5sum filename
原本打算用subprocess调用系统命令来获取md5值,
import subprocess,shlexcmd = "md5sum filename"p = subprocess(shlex.split(cmd), stdout=subprocess.PIPE)print p.stdout.read()
不过python有自带的MD5模块hashlib,用起来简单很多,
Python Hashlib模块的使用说明 http://docs.python.org/2/library/hashlib.html
fd = hashlib.md5() #获取一个MD5加密算法对象
fd.update("string") #指定需要加密的字符串
fd.hexdigest() #获取加密后的16进制字符串
实例
#!/usr/bin/env python #coding : utf-8 3 4 import sys import hashlib def md5sum(filename): fd = open(filename,"r") fcont = fd.r fd.close() fmd5 = hashlib.md5(fcont) return fmd5 if __name__ == "__main__": fmd5 = md5sum(sys.argv[1]) print fmd5.hexdigest()
其中fmd5 = hashlib.md5(fcont)等同于
fmd5 = hashlib.md5(fcont)
fmd5.update(fcont)
需要注意的是,传入 hashlib.md5() 的应该是 文件内容而不是文件名 ,这样才是对文件内容产生md5校验码;
另外,调用了 hashlib.md5() 后返回的是一个对象,想要获得linux下 md5sum 同样的效果,还要调用一下 hexdigest() 方法。
但是,这个方法有点过于粗暴,当检验大文件时,一次将所有文件内容读入内存,实在耗费较大,
网上给出实例http://blog.csdn.net/shanliangliuxing/article/details/10115397,
根据文件块长度,依次获取文件内容读入内存,通过update()逐次更新校验值,
#!/usr/bin/env python 2 #coding : utf-8 3 import hashlib def md5hex(word): """ MD5加密算法,返回32位小写16进制符号 """ if isinstance(word, unicode): word = word.encode("utf-8") elif not isinstance(word, str): word = str(word) m = hashlib.md5() m.update(word) return m.hexdigest() def md5sum(fname): """ 计算文件的MD5值 """ def read_chunks(fh): fh.seek(0) chunk = fh.read(8096) while chunk: yield chunk chunk = fh.read(8096) else: #最后要将游标放回文件开头 fh.seek(0) m = hashlib.md5() if isinstance(fname, basestring) \ and os.path.exists(fname): with open(fname, "rb") as fh: for chunk in read_chunks(fh): m.update(chunk) #上传的文件缓存 或 已打开的文件流 elif fname.__class__.__name__ in ["StringIO", "StringO"] \ or isinstance(fname, file): for chunk in read_chunks(fname): m.update(chunk) else: return ""40 return m.hexdigest()
1 0
- Python的学习(三十) ---- Python实现文件md5校验
- Python实现文件md5校验
- python中md5文件校验
- 笔记:用Python生成MD5文件的校验值
- Python的学习(三十) ---- socket编程
- Python生成文件md5校验值函数
- python 文件的md5
- python 文件的md5
- 文件的MD5校验
- Python通过MD5值实现重复文件的检测
- JAVA实现MD5文件校验
- python学习,计算文件MD5值
- Python学习实例1:实现MD5加密
- Python札记 -- 文件校验
- 【MD5】MD5校验文件的正确性
- 计算文件的MD5校验
- 关于MD5文件的校验
- Python实现CRC校验
- android.support.v4.app.Fragment和android.app.Fragment区别
- 网络环路与攻击和谷歌的四个8
- Java配置opencv 亲自试验~Eclipse+javacv-0.6-bin+opencv2.4.6.0
- RMAN catalog 的创建和使用
- redis配置文件redis.conf参数说明
- Python的学习(三十) ---- Python实现文件md5校验
- MySQL事件调度器Event Scheduler
- iOS中UITextField 使用全面解析
- 高斯投影正、反算
- javascript使用定时函数实现跳转到某个页面
- eclipse安装一个新的Python开发包后,import后不能使用包内的方法
- jquery+json+jsp实例
- Redis配置文件解读
- Xcode ARC模式:关闭与忽略