Python 2 y 3 traen un módulo específico para la comparación de archivos: filecomp
>>> import filecmp
>>> filecmp.cmp('archivo.txt', 'otro.txt')
False
>>> filecmp.cmp('archivo.txt', 'mismo.txt')
True
El método empleado es la de la comparación de bytes. De hecho la implementacion de filecmp.cmp utiliza más alla de otras cosas esa comparación:
def _do_cmp(f1, f2):
bufsize = BUFSIZE # BUFSIZE = 8*1024
with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2:
while True:
b1 = fp1.read(bufsize)
b2 = fp2.read(bufsize)
if b1 != b2:
return False
if not b1:
return True
Otro método posible para la comparación es el de hashear ambos archivos y comparar, pero esto debería ser un poco más lento que simplemente compara byte a byte.