Syntax Error Noob Frage

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
shoxxy
User
Beiträge: 2
Registriert: Dienstag 29. April 2025, 20:13

Hallo zusammen

Ich bin nur Nutzer kein Programmier, ich habe vom bekannten ein script bekommen. Auszug siehe unten. leider sind die Zeilen 2 bis x falsch formatiert oder gespeichert, könnte die vielleicht jemand für mich richtig anordnen ? das wäre sehr nett, habe da wirklich 0 ahnung.

Danke im voraus für die Hilfe

Mfg

Code: Alles auswählen

def load_saved_configs():
    """Load saved configurations from file."""       if not os.path.exists(CONFIG_FILE):
        return {}                                    with open(CONFIG_FILE, "r") as f:
        return json.load(f)
def save_config(events):
    """Save a new configuration with an incremental ID."""
    configs = load_saved_configs()

    # Determine new config ID
    new_id = str(max(map(int, configs.keys()), default=0) + 1)
    configs[new_id] = events

    with open(CONFIG_FILE, "w") as f:
        json.dump(configs, f, indent=4)

    print(f"Configuration saved as ID {new_id}.")
Sirius3
User
Beiträge: 18245
Registriert: Sonntag 21. Oktober 2012, 17:20

Einrückungen geben die Struktur vor:

Code: Alles auswählen

def load_saved_configs():
    """Load saved configurations from file."""
    if not os.path.exists(CONFIG_FILE):
        return {}
    with open(CONFIG_FILE, "r") as f:
        return json.load(f)
shoxxy
User
Beiträge: 2
Registriert: Dienstag 29. April 2025, 20:13

Vieleb vielen Dank Sirius3

Das hat geklappt ;)
Benutzeravatar
__blackjack__
User
Beiträge: 13969
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@shoxxy: Wenn Du schon dabei bist, könntest Du gleich noch Fehler beheben. :-)

Vor den Fehlern noch eine Anmerkungen zum Vorgehen: Man testet nicht die Existenz einer Datei bevor man sie öffnet, a) kann zwischen Test und öffnen ein anderer Prozess die Datei gelöscht oder verschoben haben, und b) ist der Test im `open()` auch noch einmal enthalten, denn das merkt ja wenn die Datei nicht existiert und löst eine `FileNotFound`-Ausnahme aus. *Die* behandelt man einfach entsprechend.

Die Fehler sind jeweils beim öffnen der JSON-Datei: JSON-Dateien sind UTF-8 kodiert. Das heisst das Programm funktioniert nur wirklich korrekt, wenn das auch die Kodierung ist, die Python vom System ”rät”. Wenn man Textdateien öffnet sollte man also immer explizit eine Kodierung angeben, um unangenehme Überraschungen zu vermeiden. Wobei in diesem konkreten Fall beim Lesen die Datei auch einfach im Binärmodus geöffnet werden kann — dann kümmert sich das `json`-Modul um die Dekodierung und käme auch mit anderen UTF-Kodierungen klar.

Code: Alles auswählen

def load_saved_configs():
    """
    Load saved configurations from file.
    """
    try:
        with open(CONFIG_FILE, "rb") as file:
            return json.load(file)
    except FileNotFoundError:
        return {}


def save_config(events):
    """
    Save a new configuration with an incremental ID.
    """
    configs = load_saved_configs()
    new_id = str(max(map(int, configs.keys()), default=0) + 1)
    configs[new_id] = events
    with open(CONFIG_FILE, "w", encoding="utf-8") as file:
        json.dump(configs, file, indent=4)

    print(f"Configuration saved as ID {new_id}.")
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
ClydeOwen
User
Beiträge: 1
Registriert: Montag 5. Mai 2025, 09:07
Kontaktdaten:

Ich habe das Problem gelöst, indem ich den Code so angepasst habe, dass die JSON-Datei zuerst überprüft wird, ob sie existiert. Falls nicht, erstelle ich sie mit einem leeren Dictionary. Außerdem habe ich den Code so geändert, dass die Daten richtig gelesen und geschrieben werden, inklusive einer Fehlerbehandlung für ungültiges JSON. Hier ist mein aktualisierter Code:

Code: Alles auswählen

python
import os
import json

CONFIG_FILE = 'config.json'  # Dein Dateiname für die Konfiguration

def load_saved_configs():
    if not os.path.exists(CONFIG_FILE):
        # Falls die Datei noch nicht existiert, erstelle sie mit leerem Inhalt
        with open(CONFIG_FILE, 'w') as f:
            json.dump({}, f)
        return {}
    with open(CONFIG_FILE, 'r') as f:
        try:
            configs = json.load(f)  # Versuche, die Konfiguration zu laden
        except json.JSONDecodeError:
            # Falls die Datei ungültiges JSON enthält, returne leeres Dict
            configs = {}
    return configs

def save_config(events, configs):
    # Ermittle die nächste ID, indem du die höchste vorhandene ID nimmst
    new_id = max([int(k) for k in configs.keys()], default=0) + 1
    configs[str(new_id)] = events
    # Speichere die neuen Daten in der JSON-Datei
    with open(CONFIG_FILE, 'w') as f:
        json.dump(configs, f, indent=4)
    print(f"Konfiguration wurde als ID {new_id} gespeichert.")

# Beispielnutzung:
configs = load_saved_configs()
events = ["Beispiel Event 1", "Beispiel Event 2"]
save_config(events, configs)
Antworten