En Python, hay muchos métodos disponibles para esta comparación. En este artículo, descubriremos cómo comparar dos archivos diferentes línea por línea. Python admite muchos módulos para hacerlo y aquí discutiremos los enfoques que utilizan sus diversos módulos.
Este artículo utiliza dos archivos de ejemplo para la implementación.
Archivos en uso:
Método 1: Usar unified_diff()
Python tiene un módulo que se usa especialmente para comparar las diferencias entre los archivos. Para obtener diferencias usando la biblioteca difflib , tenemos que llamar a la función unified_diff() para esta comparación.
Sintaxis:
unified_diff(file1, file2, fromfile, tofile, lineterm)
Parámetro:
- file1: Lista de strings como file_1_text
- file2: Lista de strings como file_2_text
- fromfile: primer nombre de archivo con extensión
- tofile: segundo nombre de archivo con extensión
- lineterm: argumento para «» para que la salida sea automática y uniformemente libre de nueva línea
Acercarse
- Módulo de importación
- Abrir archivos
- Compare usando unified_diff() con los atributos apropiados
Ejemplo:
Python3
# Importing difflib import difflib with open('file1.txt') as file_1: file_1_text = file_1.readlines() with open('file2.txt') as file_2: file_2_text = file_2.readlines() # Find and print the diff: for line in difflib.unified_diff( file_1_text, file_2_text, fromfile='file1.txt', tofile='file2.txt', lineterm=''): print(line)
Producción:
— archivo1.txt
+++ archivo2.txt
@@ -1,5 +1,5 @@
Aprendizaje
Python
es
-también
-simple.
+entonces
+fácil
Método 2: Usar diferencias
Hay una clase disponible para comparar las diferencias entre los archivos denominados Differ dentro de la biblioteca difflib . Esta clase se utiliza para comparar secuencias de líneas de texto y producir diferencias o deltas legibles por humanos.
Código | Sentido |
---|---|
‘-‘ |
línea única para la secuencia 1 |
‘+’ |
línea única para la secuencia 2 |
‘ ‘ |
línea común a ambas secuencias |
‘?’ |
la línea no está presente en ninguna secuencia de entrada |
Acercarse
- Módulo de importación
- Abrir archivos
- Leer línea de contenido línea bt
- Llame a la función de comparación con el uso de un objeto de clase diferente
Ejemplo:
Python3
from difflib import Differ with open('file1.txt') as file_1, open('file2.txt') as file_2: differ = Differ() for line in differ.compare(file_1.readlines(), file_2.readlines()): print(line)
Producción:
Aprendizaje
Python
es
– también
– simple.
+ entonces
+ fácil.
Método 3: Uso del bucle while y el método de intersección
Acercarse
- Abre ambos archivos en modo lectura.
- Almacenar lista de strings
- Comience a comparar ambos archivos con la ayuda del método de intersection() para strings comunes
- Compare ambos archivos en busca de diferencias usando while loop
- Cierra ambos archivos
Ejemplo:
Python3
# Open File in Read Mode file_1 = open('file1.txt', 'r') file_2 = open('file2.txt', 'r') print("Comparing files ", " @ " + 'file1.txt', " # " + 'file2.txt', sep='\n') file_1_line = file_1.readline() file_2_line = file_2.readline() # Use as a COunter line_no = 1 print() with open('file1.txt') as file1: with open('file2.txt') as file2: same = set(file1).intersection(file2) print("Common Lines in Both Files") for line in same: print(line, end='') print('\n') print("Difference Lines in Both Files") while file_1_line != '' or file_2_line != '': # Removing whitespaces file_1_line = file_1_line.rstrip() file_2_line = file_2_line.rstrip() # Compare the lines from both file if file_1_line != file_2_line: # otherwise output the line on file1 and use @ sign if file_1_line == '': print("@", "Line-%d" % line_no, file_1_line) else: print("@-", "Line-%d" % line_no, file_1_line) # otherwise output the line on file2 and use # sign if file_2_line == '': print("#", "Line-%d" % line_no, file_2_line) else: print("#+", "Line-%d" % line_no, file_2_line) # Print a empty line print() # Read the next line from the file file_1_line = file_1.readline() file_2_line = file_2.readline() line_no += 1 file_1.close() file_2.close()
Producción:
Comparando archivos
@ archivo1.txt
# archivo2.txt
Líneas comunes en ambos archivos
Aprendizaje
Python
es
Líneas de diferencia en ambos archivos
@- Línea-4 también
#+ Línea-4 entonces
@- Línea-5 simple.
#+ Línea-5 fácil.
Publicación traducida automáticamente
Artículo escrito por shubhanshuarya007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA