Rekursives Dateien vergleichen
Verfasst: Dienstag 23. Juli 2019, 14:57
Hallo Ich habe mir ein script gemacht, das zwei ordner verleicht .
Als erstes Vergleicht es alle Dateinamen, wenn die Namen stimmen liest es immer von den 2 Dateien mit gleichen namen den inhalt in bytes aus.
wenn die bytes auch stimmen giebt es eine meldung.
Mein Problem:
Es fuktioniert nur wenn es dateien im ordner hat.
ich wollte es rekursiv machen aber es ging nie.
Könnt ihr mir helfen?
Das ist der Code
Als erstes Vergleicht es alle Dateinamen, wenn die Namen stimmen liest es immer von den 2 Dateien mit gleichen namen den inhalt in bytes aus.
wenn die bytes auch stimmen giebt es eine meldung.
Mein Problem:
Es fuktioniert nur wenn es dateien im ordner hat.
ich wollte es rekursiv machen aber es ging nie.
Könnt ihr mir helfen?
Das ist der Code
Code: Alles auswählen
# -*- coding: utf-8 -*-
import os
import sys
import time
if sys.platform == 'win32':
zeichen = "\\"
else:
zeichen = "/"
ordner1 = str(input("Bitte ersten Ordner angeben: ") + zeichen)
ordner2 = str(input("Bitte zweiten Ordner angeben:") + zeichen)
start = time.time()
dateien1 = os.listdir(ordner1)
dateien2 = os.listdir(ordner2)
grösse1 = 0
grösse2 = 0
zähler = 0
for o in dateien1:
grösse1 += os.path.getsize(ordner1 + o)
for o in dateien2:
grösse2 += os.path.getsize(ordner2 + o)
grösse_1 = str(grösse1)
grösse_2 = str(grösse2)
if dateien1 == dateien2:
for i in range(len(dateien1)):
zähler += 1
print(str(zähler) + "/" + str(len(dateien1)) , end="\r")
datei1 = open(ordner1 + dateien1[i], "rb")
bytes1 = datei1.read()
datei1.close()
datei2 = open(ordner2 + dateien2[i], "rb")
bytes2 = datei2.read()
datei2.close()
if bytes1 == bytes2:
pass
else:
print("Die Ordner haben nicht den gleichen Inhalt!\nNamen gleich, Inhalt nicht.\nOrdner Nr.1 ist " + grösse_1 + " Bytes gross.\nOrdner Nr.2 ist " + grösse_2 + " Bytes gross.")
print(zähler)
print("Die Ordner haben den gleichen Inhalt!\nNamen und Inhalt sind gleich.\nBeide Ordner sind " + grösse_1 + " Bytes gross.")
ende = time.time()
print("Laufzeit: " + str(ende - start) + " Sekunden")
else:
print("Die Ordner haben nicht den gleichen Inhalt!\nNamen sind nicht gleich\nOrdner Nr.1 ist " + grösse_1 + " Bytes gross.\nOrdner Nr.2 ist " + grösse_2 + " Bytes gross.")