El módulo Filecmp en Python proporciona funciones para comparar archivos y directorios. Este módulo se incluye en los módulos de utilidad estándar de Python. Este módulo también considera las propiedades de los archivos y directorios para la comparación además de los datos en ellos.
El método filecmp.cmpfiles() en Python se usa para comparar archivos en dos directorios. Se pueden comparar varios archivos con este método. Este método devuelve tres listas de nombres de archivo, a saber, coincidencia, falta de coincidencia y errores. La lista de coincidencias contiene la lista de archivos que coincidieron en la comparación, la lista de discrepancias contiene los nombres de los archivos que no coinciden y la lista de errores contiene los nombres de los archivos que no se pudieron comparar.
Este método de forma predeterminada realiza una comparación superficial (por defecto, superficial = Verdadero), lo que significa que solo os.stat()se comparan las firmas (como el tamaño, la fecha de modificación, etc.) de los archivos y, si tienen firmas idénticas, los archivos se consideran iguales independientemente del contenido de los archivos. Si superficial se establece en Falso, la comparación se realiza comparando el contenido de los archivos.
Sintaxis: filecmp.cmpfiles(dir1, dir2, común, superficial = True)
Parámetro:
dir1 : La ruta del primer directorio. Puede ser una string, bytes u objeto os.PathLike que representa la ruta del directorio.
dir2 : La ruta del segundo directorio. Puede ser una string, bytes u objeto os.PathLike que representa la ruta del directorio.
common : una lista que representa los nombres de los archivos que se compararán en dir1 y dir2.
superficial (opcional): un valor booleano ‘Verdadero’ o ‘Falso’. El valor predeterminado de este parámetro es True. Si su valor es True, solo se comparan los metadatos de los archivos. Si es False, se comparan los contenidos de los archivos.
Tipo de devolución:Este método devuelve una tupla de tres listas que representa listas de coincidencias, discrepancias y errores.
Por ejemplo:
filecmp.cmpfiles(dir1, dir2, [file1, file2, fil3]) comparará dir1/file1 con dir2/file1 , dir1/file2 con dir2/file2 y dir1/file3 con dir2/file3 y devolverá la lista de coincidencias, discrepancias y errores .
Ejemplo: Uso del método filecmp.cmpfiles() para comparar archivos en dos directorios.
Python3
# Python program to explain filecmp.cmpfiles() method # importing filecmp module import filecmp # Path of first directory dir1 = "/home / User / Documents" # Path of second directory dir2 = "/home / User / Desktop" # Common files common = ["file1.txt", "file2.txt", "file3.txt"] # Shallow compare the files # common in both directories match, mismatch, errors = filecmp.cmpfiles(dir1, dir2, common) # Print the result of # shallow comparison print("Shallow comparison:") print("Match :", match) print("Mismatch :", mismatch) print("Errors :", errors, "\n") # Compare the # contents of both files # (i.e deep comparison) match, mismatch, errors = filecmp.cmpfiles(dir1, dir2, common, shallow = False) # Print the result of # deep comparison print("Deep comparison:") print("Match :", match) print("Mismatch :", mismatch) print("Errors :", errors)
Shallow comparison: Match : ['file1.txt', 'file2.txt', 'file3.txt'] Mismatch : [] Errors : [] Deep comparison: Match : ['file1.txt', 'file2.txt'] Mismatch : ['file3.txt'] Errors : []