Python también ha proporcionado los métodos para manipular archivos de una manera muy concisa. En este artículo vamos a discutir una de las aplicaciones de las funciones de manejo de archivos de Python, es decir, la comparación de archivos.
Archivos en uso:
Método 1: Comparar el archivo completo a la vez
Python admite un módulo llamado filecmp con un método filecmp.cmp() que devuelve tres listas que contienen archivos coincidentes, archivos no coincidentes y errores con respecto a esos archivos que no se pudieron comparar. Este método puede operar en dos modos:
- modo superficial: donde solo se comparan los metadatos de los archivos, como el tamaño, la fecha de modificación, etc.
- modo profundo: donde se compara el contenido de los archivos.
Sintaxis:
cmp(a, b)
Parámetros:
a y b son los dos números en los que se está haciendo la comparación.
Devoluciones:
- -1 si a<b
- 0 si a=b
- 1 si a > b
Programa:
Python3
import filecmp f1 = "C:/Users/user/Documents/intro.txt" f2 = "C:/Users/user/Desktop/intro1.txt" # shallow comparison result = filecmp.cmp(f1, f2) print(result) # deep comparison result = filecmp.cmp(f1, f2, shallow=False) print(result)
Producción:
Falso
Falso
Método 2: Comparar archivos línea por línea
El inconveniente del enfoque anterior es que no podemos recuperar las líneas en las que difieren los archivos. Aunque este es un requisito opcional, a menudo queremos tener cuidado con las líneas en las que los archivos difieren y luego manipularlas para nuestro beneficio. El enfoque básico para implementar esto es almacenar cada línea de cada archivo en listas separadas, una para cada archivo. Estas listas se comparan entre sí dos archivos a la vez.
Acercarse:
- Abre los archivos a comparar.
- Recorra los archivos y compare cada línea de los dos archivos.
- Si las líneas son idénticas, envíe MISMO en la pantalla de salida.
- De lo contrario, genere las líneas diferentes de ambos archivos en la pantalla de salida.
Programa:
Python3
# reading files f1 = open("C:/Users/user/Documents/intro.txt", "r") f2 = open("C:/Users/user/Desktop/intro1.txt", "r") i = 0 for line1 in f1: i += 1 for line2 in f2: # matching line1 from both files if line1 == line2: # print IDENTICAL if similar print("Line ", i, ": IDENTICAL") else: print("Line ", i, ":") # else print that line from both files print("\tFile 1:", line1, end='') print("\tFile 2:", line2, end='') break # closing files f1.close() f2.close()
Producción:
Método 3: Comparando el directorio completo
Python admite un módulo llamado filecmp con un método filecmp.cmpfiles() que devuelve tres listas que contienen archivos coincidentes, archivos no coincidentes y errores con respecto a esos archivos que no se pudieron comparar. Es similar al primer enfoque pero se usa para comparar archivos en dos directorios diferentes.
Programa:
Python3
import filecmp d1 = "C:/Users/user/Documents/" d2 = "C:/Users/user/Desktop/" files = ['intro.txt'] # shallow comparison match, mismatch, errors = filecmp.cmpfiles(d1, d2, files) print('Shallow comparison') print("Match:", match) print("Mismatch:", mismatch) print("Errors:", errors) # deep comparison match, mismatch, errors = filecmp.cmpfiles(d1, d2, files, shallow=False) print('Deep comparison') print("Match:", match) print("Mismatch:", mismatch) print("Errors:", errors)
Producción:
Comparación superficial
Juego: [ ]
Discrepancia: [ ‘ intro.txt ‘]
Errores: [ ]
Comparación profunda
Juego: []
Discrepancia: [ ‘ intro.txt ‘]
Errores: [ ]
Publicación traducida automáticamente
Artículo escrito por harshdhussa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA