Seite 1 von 1

Vergleich zweier Ordner

Verfasst: Mittwoch 2. März 2022, 10:57
von nhaeussl
Hallo zusammen :D ,

ich möchte zwei Ordner/ Verzeichnisse samt Unterordner vergleichen und ausgeben. Dazu habe ich folgendes Programm geschrieben:

============================================
import filecmp
import os

folder1 = r'...'.replace('\\', '/')
folder2 = r'...'.replace('\\', '/')

vergleich = filecmp.dircmp(folder1, folder2)

print("\n========= Vergleich ============== \n")
vergleich.report_full_closure()
==========================================

Das Programm funktioniert auch, nach dem Prinzip .report_full_closure(), eiwandfrei.

Jetzt würde ich jedoch die Ausgabe geändert haben: Nämlich, dass alle Pfade untereinander mit dem kompletten Pfad angegeben werden.
Und eventuell einen export in eine Text-Datei in einen anderen Ordner.


Könnt ihr mir dazu helfen?
Wenn ihr Ideen habt, wie man den Vergleich auch anders lösen könnte dann gebt bitte bescheid.

Vielen Dank für die Hilfe :)

Re: Vergleich zweier Ordner

Verfasst: Mittwoch 2. März 2022, 11:32
von einfachTobi
Wie hier zu sehen, bietet dir die dircmp-Klasse einige Attribute, um eine entsprechende Ausgabe zusammen zu bauen. Der Export in eine Textdatei wird z. B. hier beschrieben.

Nebenbei bemerkt: Es ist ungut auf Pfaden mit Stringoperationen zu arbeiten. Benutze lieber pathlib.

Re: Vergleich zweier Ordner

Verfasst: Mittwoch 2. März 2022, 11:54
von nhaeussl
Hallo,

Vielen Dank für die schnelle Antwort. Ich habe bereits versucht mit dircmp-Klassen zu arbeiten.
z.B.:
=========================

comparison = filecmp.dircmp(folder1, folder2)

common_files = '\n'.join(comparison.common)
left_only_files= '\n'.join(comparison.left_only)
rigth_only_files = '\n'.join(comparison.right_only)

with open(pathspeichern+'Vergleich.txt ', 'w') as folder_report:
folder_report.write("Ordner 1: "+folder1+'\n')
folder_report.write("Ordner 2: "+folder2+'\n')

folder_report.write("\nGemeinsamkeiten: \n"+common_files+'\n')
folder_report.write('\n'+"Nur in Eins:\n "+left_only_files+"\n")
folder_report.write(('\n'+"Nur in Zwei Folder: \n"+rigth_only_files))

==========================
Problem dabei ist, dass hierbei nicht mehr die Unterordner ausgegeben/überprüft werden.
Die fehlenden Dateien in den Unterveizeichnissen werden nicht Angezeigt. Woran liegt das oder was habe ich falsch gemacht?

Re: Vergleich zweier Ordner

Verfasst: Mittwoch 2. März 2022, 14:50
von __blackjack__
@nhaeussl: Schau doch einfach mal in den Quelltext von `report_full_closure()` und was es noch so an Attributen gibt und was die enthalten. Eine interaktive Python-Shell hilft auch beim erkunden von APIs und Objekten.