Hintergrund: Ich dachte es gibt gff einen Befehl zum entfernen den ich nicht kenne also habe ich Google bemüht. Dabei stellte ich fest, dass es das wohl nicht gibt und man es überschreibt.
Ich GLAUBE das meiste zu verstehen bis eben zum
write:
Dieser Code ist es ja:
Code: Alles auswählen
def remove_movie():
with open("movies.csv", "r") as file:
lines = file.readlines()
with open("movies.csv", "w") as file:
eingabe = input("Welchen Film möchten Sie enternen?")
for element in lines:
if element != eingabe + ("\n"):
file.write(element)
Alien, Predator, Terminator
Jeder hat dann ja eine Indexposition 1,2,3 und die Liste kann iteriert werden.
Ich lese die Funktion so:
Datei wird geöffnet und der Inhalt der Zeilen als Liste in lines gepackt.
Jetzt wird die Datei zum schreiben geöffnet,
eine Abfrage nach einem Film der hinzugefügt werden soll gemacht, dieser als Variabel eingabe gespeichert.
Nun für jeden Wert in lines geprüft ob der eingegebene Wert ungleich ist und wenn das true ist wird der Wert in die Datei geschrieben.
Beispiel: Eingabe ist: Rambo:
Es wird geprüft: Ist Rambo ungleich Alien?
Wenn true: Schreibe Alien in die Datei
Dann: Ist Predator ungleich Rambo
Wenn true: Schreibe Predator in die Datei
Wäre Rambo schon drin, wäre die Frage: Ist Rambo
ungleich Rambo false und es würde nicht in die Datei geschrieben.
Was mich stutzig macht ist:
w für write überschreibt eine Datei. a statt w fügt etwas hinzu.
Ich hätte eigentlich also erwartet, dass hier mit w folgendes geschehen wäre:
Alien wird reingeschrieben da true, dann wird Predator geprüft ist auch ungleich der Eingabe und würde nun Alien überschreiben.
Am Ende wäre nur Terminator in der Liste.
Aber alle drei Filme sind noch drin.
Warum überschreibt w. nicht die vorherigen Werte?