Vergleich zweier Ordner

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
nhaeussl
User
Beiträge: 2
Registriert: Dienstag 1. März 2022, 20:18

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 :)
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

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.
nhaeussl
User
Beiträge: 2
Registriert: Dienstag 1. März 2022, 20:18

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?
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten