Dateien vergleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
melmac

Hallo,

ich habe zwei Verzeichnisse (Verzeichnis 1: "vorher" und Verzeichnis 2: "nachher") Die Unterverzeichnisse und Dateien lauten in beiden Verzeichnissen gleich.

Ich würde jetzt gerne alle Dateien in Vorher mit den korrespondierenden dateien in nachher vergleichen und die Unterschiede in den verzeichnissen in eine datei ausgeben. mit filecmp bzw. dircmp bekomme ich aber nur angeziegt, ob sich die Dateien unterscheiden - aber nicht in welchen Zeielen und wie)
Wie kann ich das in Python lösen?

Danke
Martin (melmac)
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Am Besten rekursiv mit os.path.walk und dann jede datei einzeln vergleichen. Nen anderer Weg fällt mir nicht ein. os.path.walk erwartet das startverzeichnis, eine Funktion die in jedem verz gerufen wird und ein Argument, dass der Funktion jedes Mal übergeben werden soll. Die Funtion selbst erhält auch noch das Verzeichniss, in dem sie gerade gerufen wird und eine Dateiliste, die sich in dem verz. befindet. Beispiel:

Code: Alles auswählen

import os
def call(arg, dir, files):
    print "Im Verzeichniss %s sind diese Dateien %s" %(dir,reduce(lambda x,y:"%s, %s"%(x,y),files,""))
    print "Als Argument wurde",arg,"übergeben."

os.path.walk("c:/",call,"nix")
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!
melmac hat geschrieben:mit filecmp bzw. dircmp bekomme ich aber nur angeziegt, ob sich die Dateien unterscheiden - aber nicht in welchen Zeielen und wie)
Wie kann ich das in Python lösen?
Seit Python Version 2.1 gibt es das Standard-Modul difflib. Ich habe selbst noch nicht mit gearbeitet, sollte aber genau das Richtige sein.
Jan
Antworten