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"
}
