Comparer deux fichiers de rapport de différence en python

J'ai 2 fichiers appelés "hôtes" (dans des répertoires différents)

Je veux les comparer à l'aide de python pour voir si elles sont IDENTIQUES. Si elles ne sont pas Identiques, je veux imprimer la différence à l'écran.

Pour l'instant j'ai essayé ce

hosts0 = open(dst1 + "/hosts","r") 
hosts1 = open(dst2 + "/hosts","r")

lines1 = hosts0.readlines()

for i,lines2 in enumerate(hosts1):
    if lines2 != lines1[i]:
        print "line ", i, " in hosts1 is different \n"
        print lines2
    else:
        print "same"

Mais lorsque je l'exécute, je reçois

File "./audit.py", line 34, in <module>
  if lines2 != lines1[i]:
IndexError: list index out of range

Qui signifie que l'un des hôtes a plus de lignes que les autres.
Est-il une meilleure méthode pour comparer les 2 fichiers et le rapport de la différence?

  • Comment calculer un hash? Comme un raccourci pour le savoir rapidement si elles sont différentes
  • double possible de Comment détecter si les deux fichiers sont identiques en Python
  • utilisation difflib ou tout simplement la commande diff sur la console
  • stackoverflow.com/questions/977491/...
  • Je l'ai déjà vu celui-là. Il ne répond pas à ma question. Je suis un débutant en python et que la question parle de hachage et de sortie dès qu'il constate une différence. Je ne veux pas quitter. Je veux imprimer toute la différence. (merci d'ailleurs)
  • Je vais regarder dans difflib mais la diff de commande est une commande linux. Python ne le reconnait pas..!!
  • Je vous remercie. Mais je n'ai pas seulement envie de savoir si elles sont différentes. Je veux lire les fichiers complets et le rapport de la différence. Donc, je ne veux pas python pour quitter dès qu'il constate une différence
  • vous voulez comparer l'équivalent des numéros de ligne? ou de savoir si une ligne est dans un autre fichier?
  • Je veux comparer l'équivalent des numéros de ligne. En d'autres termes, je veux voir si les 2 fichiers sont EXACTEMENT LES MÊMES. Si ils ne le sont pas, alors je veux imprimer les ligne(s) où ils sont différents. Merci

InformationsquelleAutor Masster | 2013-10-01