ich bin noch relativer Anfänger und schreibe gerade ein kleines Programm was folgendes tun soll.
In einem Ordner sind viele Dateien mit Dateinamen 001, 002, ... 150 (z.B).
Dummerweise fehlen manchmal zwischendrin Datein (die letzte ist aber immer da!) und ich will nun rausfinden welche.
Den ganzen Kram mit Verzeichnissen/Dateinamen lesen ist kein Problem allerdings macht mir meine folgende Funktion zu schaffen:
Code: Alles auswählen
def FehlendeBilder(index_zaehler, end, index_dateizaehler, fehlt_string):
fehlt = fehlt_string
if index_zaehler <= end:
erwartet = index_zaehler + 1
bekommen = int(bildernummern[index_dateizaehler])
if erwartet != bekommen:
fehlt = fehlt + str(erwartet)
FehlendeBilder(index_zaehler+1, end, index_dateizaehler, fehlt)
else:
FehlendeBilder(index_zaehler+1, end, index_dateizaehler+1, fehlt)
else:
print(fehlt + "THIS LINE WILL BE ALWAYS PRINTED AT THE END") #prints '78THIS LINE WILL BE ALWAYS PRINTED AT THE END'
return fehlt # RETURNS 'none'
Code: Alles auswählen
print(FehlendeBilder(0, int(bildernummern[-1])-1, 0,""))
1) Wird aufgerufen mit
- index_zaehler = 0 als dem Startwert zum Hochzählen,
- int(bildernummern[-1])-1 # das soll aus der Liste mit den Dateinamen den letzten Wert (=der Höchste, da wir davon ausgehen, dass die letzte Datei immer vorhanden ist) nehmen und davon 1 abziehen damit man nachher vergleichen kann (die Liste fängt bei 0 an, aber die Dateien bei 1, also muss man halt eins weniger durchgehen).
- index_dateizaehler = 0 als dem Zähler, welche Datei nun kommen müsste,
- fehlt_string = "" das ist der string den ich mitschleppen will in den dann immer der Name der fehlenden Datei eingetragen wird.
----
So der Witz an dem Ganzen, und was ich überhaupt nicht verstehe, ist das, was in den letzten beiden Zeilen passiert
Dort steht:
Code: Alles auswählen
print(fehlt + "THIS LINE WILL BE ALWAYS PRINTED AT THE END") #prints '78THIS LINE WILL BE ALWAYS PRINTED AT THE END'
return fehlt # RETURNS 'none'
Warum?
Danke