2017-07-17 7 views
0

Ich habe eine Schleife, wo ich ein generiertes JSON-Objekt in eine Datei hinzufügen, und dann trennen ich jedes Objekt mit Komma (ich benutze öffnen ("filename.txt", "w") Methode dafür). Was können Sie vorschlagen, anstatt JSON-Objekte an * .txt-Dateien anzuhängen, könnte ich mehrere JSON-Dateien wie bei jeder Schleife erstellen? In der Zukunft muss ich Daten verwenden, die in JSON gespeichert sind, um einige Berechnungen durchzuführen, also suche ich nach einer Möglichkeit, eine gut organisierte Struktur zu erstellen. Vielen Dank im Voraus.Erstellen und speichern Sie mehrere JSON-Dateien programmgesteuert aus Python

+1

Warum extrahieren Sie keine Daten aus Ihrem JSON-Objekt und speichern es in einer Datenbank? –

+0

Zuerst muss ich diese Daten erstellen - deshalb suche ich nach einer Möglichkeit, JSON-Dateien zu erstellen. Momentan sieht es so aus: (generate_data, 10) - und als Ausgabe habe ich 10 json-Objekte in einer txt-Datei. Wenn ich Daten aus dieser Datei extrahieren kann und Sie mir sagen können, wie ich es tun kann, werde ich es zu schätzen wissen. –

+0

Dies ist alles Standard Python Schleifen und Kontrollstrukturen. Das Internet ist voll von exzellenten Quellen, wie man das zum Beispiel in Python macht (http://www.oreilly.com/programming/free/files/a-whirlwind-tour-of-python.pdf) –

Antwort

1

Wenn Sie die Dateien wirklich ausgeben möchten, können Sie sie nur Dump separat json Modul Python mit (docs) wie folgt:

import json 
json.dump(json_object, filename) 

Dies wird eine Menge von Dateien ein Sie geben Sie brauchen bei Bedarf erneut einlesen, mit json.load().

Sie können auch mehrere JSON-Objekte in einer Textdatei speichern und dann iterieren, indem Sie jedes einzelne Element mit json.loads lesen; notieren Sie die s am Ende, was bedeutet, dass es eine beliebige Zeichenfolge konvertiert, die Sie in es einspeisen, zum Beispiel eine Zeile in Ihrer Datei.

for line in f: 
    input_json = json.loads(line) 
    #you'll want to store this somewhere, e.g. in a dictionary. 

Aber wie oben in den Kommentaren darauf hingewiesen, könnten Sie zu überdenken wollen, wenn das der Weg, den Sie gehen möchten, ist.

0

Betrachten wir Ihr Speichersystem mit Dateien.

Ich würde Daten nur am Ende schreiben und eine Liste von Daten erstellen.

Jedes Mal müssen Sie alle Ihre JSON-Datei laden, wenn Sie eine Berechnung durchführen möchten. Dann, wenn Sie Ihre Datei aktualisieren möchten, müssen Sie alles laden, aktualisieren Sie Ihre JSON-Daten und speichern Sie dann erneut Ihre Datei.

Diese Lösung ist teuer, deshalb empfehlen wir Ihnen, DataBase wie MangoDB zu verwenden.

Aber hängt davon ab, was Sie tun müssen (Schulprojekt?), Dateispeicher kann genug sein.

Unten ein Beispiel für das Update.

results = [] 
with open('data.json') as data_file:  
    data = json.load(data_file) 
    results = data["results"] 
    # You can update your data here 
    for result in results: 
     if result["id_test"] == 15: 
      result["data_test"] = "DATA UPDATED" 
data = { 
    "results": results 
} 

with open('data.json', 'w') as outfile: 
    json.dump(data, outfile) 
Verwandte Themen