检查文件是否相等

ill*_*ant 5 python equality file

在Python中检查文件是否相等的最优雅方法是什么?校验?字节比较?认为文件不会超过100-200 MB

wum*_*ump 9

filecmp模块怎么样?它可以通过不同的权衡以多种不同的方式进行文件比较.

更好的是,它是标准库的一部分:

http://docs.python.org/library/filecmp.html


inv*_*ert 5

使用hashlib获取每个文件的md5,并比较结果.

#! /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)
Run Code Online (Sandbox Code Playgroud)

更新:从Python 2.1开始,有一个filecmp模块可以满足您的需求,并且还具有比较目录的方法.我从来不知道这个模块,我自己还在学习Python :-)

>>> import filecmp
>>> filecmp.cmp('undoc.rst', 'undoc.rst')
True
>>> filecmp.cmp('undoc.rst', 'index.rst')
False
Run Code Online (Sandbox Code Playgroud)

  • @EOL你有一个有效的点,也可以.我看到的唯一优势是存储哈希+文件修改日期,并在将来再次使用这些预先计算的值. (2认同)