最近在测试文件拷贝测试,需要对文件拷贝后进行MD5值比较,看是不是拷贝完全。google和baidu上都是使用md5模块读取所有的文件进内存,在计算md5,导致计算超过1G大小的文件报错。timespace兄给出了增量计算MD5的方法,记录一下:
-
#!/usr/bin/env python
-
-
import hashlib
-
import sys
-
-
def main():
-
if len(sys.argv) != 2:
-
sys.exit('Usage: %s file' % sys.argv[0])
-
-
filename = sys.argv[1]
-
m = hashlib.md5()
-
with open(filename, 'rb') as fp:
-
while True:
-
blk = fp.read(4096) # 4KB per block
-
if not blk: break
-
m.update(blk)
-
print m.hexdigest(), filename
-
-
if __name__ == '__main__':
-
main()
阅读(10599) | 评论(0) | 转发(0) |