2009-08-26 39 views
8

Sé que puedo usar cmp, diff, etc. para comparar dos archivos, pero lo que estoy buscando es una utilidad que me da una diferencia porcentual entre dos archivos.diferencia porcentual entre dos archivos de texto

si no hay tal utilidad, cualquier algoritmo también estaría bien. He leído sobre programación difusa, pero no lo he entendido del todo.

+0

¿Cómo se define la "diferencia porcentual"? ¿Cómo cuentas los caracteres/palabras/líneas extraviados, extra e intercambiados? –

+1

no habrá ningún carácter intercambiado ni palabra o línea en los archivos. los dos archivos son archivos de registro, un archivo de registro es todo un archivo de registro, lo que significa que el sistema funciona perfectamente. en cada hora se escribe un nuevo registro. así que quiero comparar el registro recién escrito con el registro estándar. si el nuevo registro es diferente al registro estándar, envíelo al ingeniero de soporte de nivel {X}. ¿Está claro ahora? – Mohamed

+0

Ver: http://stackoverflow.com/questions/145607/text-difference-algorithm – tzot

Respuesta

26

Usted puede utilizar difflib.SequenceMatcher ratio método

De la documentación:

Volver una medida de la similitud de las secuencias como un flotador en el rango [0, 1].

Por ejemplo:

from difflib import SequenceMatcher 
text1 = open(file1).read() 
text2 = open(file2).read() 
m = SequenceMatcher(None, text1, text2) 
m.ratio() 
+0

gracias. No sabía esa parte de la biblioteca. – Mohamed

0

Beyond Compare tiene muy buenas estadísticas de diferencia de archivos exportan a csv. Se informan las diferencias en el nivel de línea, por lo que es bueno comparar los archivos de código fuente.

Cuestiones relacionadas