Python fehler code bei langen texten?
Ich habe einen Programm in python geschrieben import json
import os
class NotizManager:
def __init__(self, datei_name="notizen.json"):
self.datei_name = datei_name
self.notizen = self.notizen_laden()
def notizen_laden(self):
# Lade Notizen aus der JSON-Datei, falls vorhanden
if os.path.exists(self.datei_name):
with open(self.datei_name, 'r') as file:
return json.load(file)
return []
def notizen_speichern(self):
with open(self.datei_name, 'w') as file:
json.dump(self.notizen, file, indent=4)
def notiz_hinzufuegen(self, thema, inhalt):
self.notizen.append({'thema': thema, 'inhalt': inhalt})
self.notizen_speichern()
print(f'Notiz "{thema}" wurde hinzugefügt.')
def alle_notizen_anzeigen(self):
if not self.notizen:
print("Es gibt keine gespeicherten Notizen.")
else:
for index, notiz in enumerate(self.notizen, start=1):
print(f'{index}. Thema: {notiz["thema"]}\n Inhalt: {notiz["inhalt"]}\n')
def notiz_bearbeiten(self, index, neues_thema, neuer_inhalt):
if 0 <= index < len(self.notizen):
self.notizen[index]['thema'] = neues_thema
self.notizen[index]['inhalt'] = neuer_inhalt
self.notizen_speichern()
print(f'Notiz {index + 1} wurde aktualisiert.')
else:
print("Ungültiger Index. Bitte gib einen gültigen Notizindex ein.")
def notiz_loeschen(self, index):
if 0 <= index < len(self.notizen):
geloeschte_notiz = self.notizen.pop(index)
self.notizen_speichern()
print(f'Notiz "{geloeschte_notiz["thema"]}" wurde gelöscht.')
else:
print("Ungültiger Index. Bitte gib einen gültigen Notizindex ein.")
def hauptmenue():
manager = NotizManager()
while True:
print("\n--- Notiz Manager ---")
print("1. Notiz hinzufügen")
print("2. Alle Notizen anzeigen")
print("3. Notiz bearbeiten")
print("4. Notiz löschen")
print("5. Beenden")
auswahl = input("Wähle eine Option (1-5): ")
if auswahl == '1':
thema = input("Thema der Notiz: ")
inhalt = input("Inhalt der Notiz: ")
manager.notiz_hinzufuegen(thema, inhalt)
elif auswahl == '2':
manager.alle_notizen_anzeigen()
elif auswahl == '3':
manager.alle_notizen_anzeigen()
try:
index = int(input("Gib den Index der Notiz ein, die du bearbeiten möchtest: ")) - 1
neues_thema = input("Neues Thema: ")
neuer_inhalt = input("Neuer Inhalt: ")
manager.notiz_bearbeiten(index, neues_thema, neuer_inhalt)
except ValueError:
print("Bitte gib eine gültige Zahl ein.")
elif auswahl == '4':
manager.alle_notizen_anzeigen()
try:
index = int(input("Gib den Index der Notiz ein, die du löschen möchtest: ")) - 1
manager.notiz_loeschen(index)
except ValueError:
print("Bitte gib eine gültige Zahl ein.")
elif auswahl == '5':
print("Programm beendet.")
break
else:
print("Ungültige Auswahl. Bitte wähle eine Option zwischen 1 und 5.")
if __name__ == "__main__":
hauptmenue()
Das Problem ist wenn ich einen Thema hinzufügen möchte mache ich das Thema rein und danach der Titel, wenn ich aber einen langen Titel rein mache wird sich das print("\n--- Notiz Manager ---")
print("1. Notiz hinzufügen")
print("2. Alle Notizen anzeigen")
print("3. Notiz bearbeiten")
print("4. Notiz löschen")
print("5. Beenden")
mehrmals wiederholen und der text speichert sich nicht warum?
Könntest Du den Fehler genauer beschreiben?
Sie sind im Begriff, Text einzufügen, der mehrere Zeilen enthält. Wenn Sie diesen Text in Ihre Shell einfügen, kann dies zu einer unerwarteten Ausführung von Befehlen führen.
2 Antworten
So, ich habe das jetzt nochmal versucht zu reproduzieren und getestet. Ich kann kein Fehlverhalten erkennen, auch die Datendatei sieht soweit korrekt aus. Von daher gehe ich davon aus, daß das Problem nicht im gezeigten Code liegt.
Ich habe eien wage Idee - Der 'öängere' Text, den hast Du aber nicht via Copy udn Paste eingefügt?
Ich kann kein Python, aber irgendwie fehlt mir die Stelle, wo du die Datei mit file.close() o.Ä. nach dem Speichern/Laden wieder schließt. Wenn die beim 2. mal schon zum Schreiben offen ist und damit gesperrt, kannst du die nicht nochmal öffnen.
Du meinst die stellen im eingerückten with Statement?
Diese bereinigen sich selbst nach der einrückung, beim with öffnen schließt es nachdem das eingerückte durch ist.
woran könnte es denn liegen, ich habe alles versucht?