去掉重复的文件
来源:互联网 发布:chairgun3弹道软件 编辑:程序博客网 时间:2024/05/16 02:31
MD5和SHA-1 算法来哈希文件比较常用,它们非常快,并且可以用它们来鉴别文件,它们是根据文件内容来鉴别,并不是文件的名字。
python hash MD5
注:使用python 高于2.7版本,包括3.x版本
import hashlibhasher = hashlib.md5()with open('myfile.jpg', 'rb') as afile: buf = afile.read() hasher.update(buf)print(hasher.hexdigest())
使用rb模式打开文件,因为MD5方法是使用字节串的方式读取文件的,这样一来可以hash任何文件,不仅仅是文本文件
注意:这里的读取方法,像前面代码这样,当没有其他参数时,它是将所有的内容读入内存,如果不确定文件的大小,这很危险。
MD5 hash大的文件
import hashlibBLOCKSIZE = 65536hasher = hashlib.md5()with open('anotherfile.txt', 'rb') as afile: buf = afile.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf) buf = afile.read(BLOCKSIZE)print(hasher.hexdigest())
如果不想用MD5,可以换成其他算法,如:SHA1:
import hashlibBLOCKSIZE = 65536hasher = hashlib.sha1()with open('anotherfile.txt', 'rb') as afile: buf = afile.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf) buf = afile.read(BLOCKSIZE)print(hasher.hexdigest())
查看支持的算法: hashlib.algorithms_available. (3.2 以上版本有效).
最后封装成方法
import hashlibdef md5Checksum(filePath): with open(filePath, 'rb') as fh: m = hashlib.md5() while True: data = fh.read(8192) if not data: break m.update(data) return m.hexdigest()print('The MD5 checksum of text.txt is', md5Checksum('test.txt'))
资源链接:
http://joelverhagen.com/blog/2011/02/md5-hash-of-file-in-python/
http://www.pythoncentral.io/hashing-files-with-python/
0 0
- 去掉重复的文件
- 去掉重复的数字
- 用Arraylist的contains()方法去掉文件中的重复数据
- 如何去掉一个文件中重复的数据行
- linux sort去掉文件中重复的行
- 使用awk去掉文件中某列重复的行
- 如何去掉去掉重复的字符!
- 怎样去掉重复的记录
- 去掉连续重复的字符
- 去掉ID重复的数据
- js去掉重复的元素
- c++ vector去掉重复的
- javaScript去掉重复的字符
- list去掉重复的对象
- JS 去掉重复的值
- 字符串去掉重复的值
- java去掉重复的字母
- js 去掉重复的字符串
- 编写who命令
- topcoder-srm610-div2-1000(dp)
- 【css实践】全屏实现背景图片
- Perl 采集监控日志插入数据库
- Lua脚本语法说明(修订)
- 去掉重复的文件
- 黑马程序员_Java语言_异常,File类
- 剑指Offer之 - 字符串的排列
- TCP 的那些事儿(下)
- Hive——SerDe
- getline()
- 用状态方程解析出Java代码的三种注释
- java Socket网络编程
- Tomcat: org.apache.jasper.JasperException