Daten mit Python an eine JSON-Datei anhängen
- Daten mit Python an eine JSON-Datei anhängen
-
Verwenden Sie ein
list
-Python-Objekt, um Daten in einer JSON-Datei zu aktualisieren -
Verwenden Sie ein Python-
dict
-Objekt, um Daten in einer JSON-Datei zu aktualisieren
Benutzer werden von den meisten Webanwendungen und Rest-APIs mit Daten im JSON-Format versorgt, da es in Webanwendungen weit verbreitet und leicht verständlich ist. Wenn Sie also Python in Webanwendungen verwenden, könnten Sie daran interessiert sein, Daten mit Python an eine JSON-Datei anzuhängen.
In diesem Tutorial werden Möglichkeiten zum Anhängen von Daten an eine JSON-Datei mit Python aufgezeigt.
Daten mit Python an eine JSON-Datei anhängen
Wir können eine JSON-Datei nicht direkt mit Python anhängen, aber wir können sie überschreiben. Wie fügt man also Daten in eine JSON-Datei ein?
Dazu müssen wir die folgenden Schritte ausführen:
-
Lesen Sie die JSON-Datei in einem Python-
dict
- oderlist
-Objekt. -
Hängen Sie das
dict
- oderlist
-Objekt an. -
Schreiben Sie das aktualisierte
dict
- oderlist
-Objekt in die ursprüngliche JSON-Datei (hier wird der vorherige Inhalt mit dem aktualisierten Inhalt überschrieben).
Unsere JSON-Datei (data.json
) enthält die unten angegebenen Daten, die wir in den kommenden Codebeispielen in diesem Artikel verwenden werden.
Inhalt der JSON-Datei (gespeichert in der Datei data.json
):
{
"student_details":[
{
"student_first_name": "Mehvish",
"student_last_name": "Ashiq",
"student_email": "mehvish@gmail.com"
},
{
"student_first_name": "Tahir",
"student_last_name": "Raza",
"student_email": "tahir@yahoo.com"
}
]
}
Verwenden Sie ein list
-Python-Objekt, um Daten in einer JSON-Datei zu aktualisieren
Angenommen, wir möchten den folgenden Schüler in der Datei data.json
hinzufügen:
{
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com"
}
Lassen Sie uns dazu den folgenden Code ausführen.
Beispielcode (gespeichert in demo.py
):
import json
def write_json(new_student, filename="./data.json"):
with open(filename, "r+") as file:
file_content = json.load(file)
file_content["student_details"].append(new_student)
file.seek(0)
json.dump(file_content, file, indent=4)
new_student = {
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com",
}
write_json(new_student)
Zuerst importieren wir das json
-Modul, um mit JSON-Dateien zu arbeiten. Als nächstes schreiben wir eine write_json()
-Funktion, die zwei Parameter akzeptiert: den new_student
mit den Studentendetails, die wir anhängen möchten, und den filename
(wir können hier auch den Dateipfad angeben).
Innerhalb dieser Funktion verwenden wir die Methode open()
, um die angegebene Datei im Lesemodus zu öffnen. Dann verwenden wir json.loads()
, um den JSON-String (Laden der vorhandenen Daten) in file_content
zu parsen.
Als nächstes verwenden wir das Listenobjekt, um .append()
zu verwenden, um den file_content
mit dem new_student
in den student_details
zu verbinden. Das file.seek(0)
setzt die aktuelle Position der Datei auf offset.
Schließlich verwenden wir .dump()
, um es wieder in JSON zu konvertieren.
Nun führen wir den obigen Code mit python demo.py
wie folgt aus:
PS E:\Code> python demo.py
Unsere data.json
-Datei wird bei erfolgreicher Ausführung des obigen Programms überschrieben. Siehe die aktualisierte data.json
-Datei unten.
AUSGABE (Dateiinhalt von data.json
):
{
"student_details": [
{
"student_first_name": "Mehvish",
"student_last_name": "Ashiq",
"student_email": "mehvish@gmail.com"
},
{
"student_first_name": "Tahir",
"student_last_name": "Raza",
"student_email": "tahir@yahoo.com"
},
{
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com"
}
]
}
Verwenden Sie ein Python-dict
-Objekt, um Daten in einer JSON-Datei zu aktualisieren
Nehmen wir nun an, wir möchten eine weitere Eigenschaft hinzufügen, "Abschnitt": "A"
für alle Schüler. Das können wir wie folgt machen:
Beispielcode (gespeichert in der Datei demo.py
):
import json
def write_json(section, filename="./data.json"):
with open(filename, "r+") as file:
file_content = json.load(file)
file_content.update(section)
file.seek(0)
json.dump(file_content, file, indent=4)
section = {"section": "A"}
write_json(section)
Dieses Beispiel ähnelt dem letzten, bei dem das Objekt list
verwendet wurde, um Daten in einer JSON-Datei zu aktualisieren, mit Ausnahme eines Unterschieds. Hier verwenden wir ein dict
-Objekt, um die .update()
-Methode zu verwenden, die ein dict
(Wörterbuch) mit Elementen aus einem anderen dict
-Objekt oder aus einem iterierbaren Schlüssel-Wert-Paar aktualisiert.
Wir werden den folgenden Inhalt in der Datei data.json
haben, nachdem wir diese Programmierung mit dem Befehl python demo.py
ausgeführt haben.
AUSGABE (gespeichert in der Datei data.json
):
{
"student_details": [
{
"student_first_name": "Mehvish",
"student_last_name": "Ashiq",
"student_email": "mehvish@gmail.com"
},
{
"student_first_name": "Tahir",
"student_last_name": "Raza",
"student_email": "tahir@yahoo.com"
},
{
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com"
}
],
"section": "A"
}