@Kirikkayis: Du hast keine main-Funktion, sondern nur eine if-Abfrage. Besser wäre es, tatsächlich eine main-Funktion zu schreiben:
Code: Alles auswählen
def main():
json_export = xyz.load_json_file()
if __name__ == '__main__':
main()
Nach Konvention werden Variablennamen, Funktionen und Module klein_mit_unterstrich geschrieben und mit 4 Leerzeichen pro Ebene eingerückt, keine Tabs. Variablennamen sollte man nicht abkürzen, vor allem nicht, wenn dann so ein verstümmelter Buchstabensalat wie `obje` herauskommt. Beim Programmieren muß das doch mühsam sein, immer wieder die selben Schreibfehler zu reproduzieren.
Der Fehler tritt eindeutig bei loads auf, um zu wissen, was falsch ist, müßte man aber den Inhalt von `f_contents` kennen, bzw. die unsinnige "Fehlerbehandlung" komplett entfernen, weil dann wird Dir auch genau gesagt, was daran falsch ist.
Fehler sollte man nur behandeln, wenn sie an dieser Stelle auch sinnvoll behandelbar ist. Eine Behandlung, die gleich danach in einem NameError endet, ist es sicher nicht. Warum verwendest Du `json.loads` statt `json.load`?
Literale Stringwerte sollte man als Konstanten am Anfang definieren, damit jeder gleich sieht, welche Abhängigkeiten es gibt und um Schreibfehler zu verhindern, falls der selbe Wert öfter auftritt. json-Daten erwarten ein bestimmtes Encoding, das sollte man entweder direkt beim Öffnen der Datei angeben, oder die Datei binär öffnen, dann sorgt `json.load` gleich für die richtige Zeichenbehandlung.
Übrig bleibt also:
Code: Alles auswählen
EXPORT_FILENAME = 'D:\\export.json'
def load_json_file():
with open(EXPORT_FILENAME, 'rb') as f:
return json.load(f)
@OozeWithUzi: JSONDecodeError ist eine abgeleitete Klasse von ValueError, damit wird sie auch durch diesen except-Block abgefangen.