Zwingen json-dump, ein json-Objekt selbst wenn die Liste leer ist
Habe ich eine Liste, die möglicherweise leer oder nicht leer ist.
Möchte ich eine neue Datei erstellen, die enthält, die Liste in einem format, das leicht lesbar und einfach für mein Nächstes Skript zu analysieren. In dem Fall, wo die Liste nicht leer ist, dies funktioniert sehr gut und meine nächste Skript liest in der json-Datei. Aber wenn die Liste leer ist, bekomme ich "ValueError: Keine JSON-Objekt dekodiert werden konnte." Dies macht Sinn, weil wenn ich die Datei öffnen, es gibt ja keine Inhalte und somit auch keine JSON-Objekt.
Ich bin OK mit der Tatsache, dass einige Listen sind leer. Also, entweder ich will schreiben, ein leeres JSON-Objekt-oder ich möchte, dass meine Leser Skript, OK, mit nicht der Suche nach einem JSON-Objekt.
Hier ist der relevante code:
Schriftsteller Skript
favColor = [] OR favColor = ['blue'] OR favColor = ['blue', 'green']
fileName = 'favoriteColor.json'
outFile = open(fileName, 'w')
json.dump(outFile, favColor)
outFile.close()
Reader Skript
fileName = 'favoriteColor.json'
inFile = open(fileName, 'r')
colors = json.load(inFile)
inFile.close()
Jede Hilfe oder Anregungen geschätzt. Wenn ich Bedarf an mehr Gründe dafür, warum ich das hier mache, kann ich das auch, nur dachte, ich würde beginnen mit minimum notwendig, um das problem zu verstehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie Ihre reader-Skript dieses:
Diese versuche zu laden, wird die Datei als json. Wenn es scheitert, um einen Wert Fehler, wir wissen, dass dies ist, weil die json leer ist. Deshalb können wir nur Farben zuweisen einer leeren Liste. Außerdem ist es vorzuziehen, verwenden Sie den "with" - Konstrukt, um Dateien zu laden, da es schließt Sie automatisch.
Würde ich nicht gehen, der Ansatz, Sie versuchen. Ich würde stattdessen
json.dump
ein Wörterbuch, z.B.:Dann verwenden
dict.get
zu default, um einen geeigneten Wert:Dann haben Sie noch die obligatorischen Werte, außer wenn nicht mit
[]
notation.Stellt die Logik der fehlenden Werte in Ihrem code anstelle der json-Parser...
Können Sie auch fügen Sie den Namen der variable in Ihrer json-Datei:
Und behandelt den Fall der leeren Liste beim Einlesen der json-Datei:
Beachten Sie, dass müssen Sie das Objekt, das Sie speichern möchten, und dann die Datei-wie-Objekt zu
json.dump
.