这里有新鲜出炉的 Python 教程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 Python 实现通过文件路径获取文件 hash 值的方法, 结合实例形式分析了 Python 针对文件进行 hash 运算的实现方法与相关注意事项, 需要的朋友可以参考下
本文实例讲述了 Python 实现通过文件路径获取文件 hash 值的方法。分享给大家供大家参考,具体如下:
- import hashlib import os,
- sys def CalcSha1(filepath) : with open(filepath, 'rb') as f: sha1obj = hashlib.sha1() sha1obj.update(f.read()) hash = sha1obj.hexdigest() print(hash) return hash def CalcMD5(filepath) : with open(filepath, 'rb') as f: md5obj = hashlib.md5() md5obj.update(f.read()) hash = md5obj.hexdigest() print(hash) return hash
- if __name__ == "__main__": if len(sys.argv) == 2 : hashfile = sys.argv[1]
- if not os.path.exists(hashfile) : hashfile = os.path.join(os.path.dirname(__file__), hashfile) if not os.path.exists(hashfile) : print("cannot found file")
- else CalcMD5(hashfile)
- else: CalcMD5(hashfile)#raw_input("pause")
- else: print("no filename")
使用 Python 进行文件 Hash 计算有两点必须要注意:
1、文件打开方式一定要是二进制方式,既打开文件时使用 b 模式,否则 Hash 计算是基于文本的那将得到错误的文件 Hash(网上看到有人说遇到 Python 的 Hash 计算错误在大多是由于这个原因造成的)。
2、对于
如果需要 16 位 (bytes) 的值那么调用对象的
- MD5
而
- digest()
默认是 32 位 (bytes),同理
- hexdigest()
的
- Sha1
和
- digest()
分别产生 20 位 (bytes) 和 40 位 (bytes) 的 hash 值
- hexdigest()
希望本文所述对大家 Python 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0714/334849.html