#! /bin/env python
import hashlib
def filemd5(filename, block_size=2**20):
f = open(filename)
md5 = hashlib.md5()
while True:
data = f.read(block_size)
if not data:
break
md5.update(data)
f.close()
return md5.digest()
if __name__ == "__main__":
a = filemd5('/home/neo/todo')
b = filemd5('/home/neo/todo2')
print(a == b)
使用hashlib获取每个文件的md5,并比较结果。
更新:从Python2.1开始,有一个filecmp module可以满足您的需要,并且有方法来比较目录。我从来不知道这个模块,我自己还在学习Python:—)
那么
filecmp
模块呢?它可以用多种不同的方式进行文件比较,并有不同的折衷方案。更好的是,它是标准库的一部分:
http://docs.python.org/library/filecmp.html
好吧,这可能需要两个不同的答案。
如果有许多文件要比较,请选择校验和并缓存每个文件的校验和。当然,之后要逐字节比较匹配的文件。
如果只有两个文件,直接进行字节比较,因为无论如何都必须读取该文件才能计算校验和。
在这两种情况下,使用文件大小作为检查不平等的早期方法。
相关问题 更多 >
编程相关推荐