Cómo comparar si dos archivos son iguales con Python. Módulo filecmp y lectura byte-a-byte

03/09/2017 | Autor: Eduardo Enriquez

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.

 


Tags