2017-07-18 3 views
0

Ich möchte eine einzelne Datei erstellen, die mehrere Python-Wörterbücher zu Küstenwetterbedingungen (Gezeiten, Wind usw.) kombiniert, die von Tag zu Tag aktualisiert werden können. Die Daten stammen aus mehreren APIs und Websites, von denen jede ich ein Python-Wörterbuch konvertieren und verschmelzen zu einem einzigen Wörterbuch, um die folgende Codezeile verwenden:Mehrere Python-Wörterbücher in dynamische Datei zusammenführen

OneDayWeather_data = {'Willydata' : Willydata, 'Bureau of Meteorology' : BoMdata, 'WeatherZone' : WZdata} 

Mein Ziel ist es, die Seiten jeden Tag zu probieren; und aktualisieren Sie eine einzelne Datei mit dem Wetter und der Wettervorhersage für jeden Tag auf den Websites. Ich denke, der beste Weg, dies zu tun, ist eine neue Top-Ebene für die Hierarchie mit dem Datum zu erstellen. So würde es wie so etwas sein:

Weather_data['18/07/2017']['Willy']['Winds'] 

Weather_data['18/07/2017']['BoMdata']['Winds'] 

Für jeden Tag, würde ich dann einen neuen Top-Level-Eintrag hinzufügen, für die Daten des neuen Tages, dh

AllWeatherData['19/07/2017']['Willy']['Winds'] 

habe ich versucht, dies mit einer Vielzahl von Methoden vorgeschlagen von Stack-Überlauf (Vollständige Offenlegung: Ich bin ziemlich neu in Python). Zum Beispiel

# write the initial file 
with open('test.json', 'w') as f: 
    json.dump(OneDayWeather_data, f)  

# open the initial file and attempt to append 
with open('test.json','r+') as f: 
    dic = dict(json.load(f)) 
    dic.update(OneDayWeather_data) 
    json.dump(dic, f) 

# reopen the appended file 
with open('test.json', 'r') as f2: 
    json_object = json.load(f2) 

... aber ich halte Fehler bekommen (in diesem Fall: Valueerror (errmsg ("Extra-Daten", s, Ende, len (s))), wenn ich versuche, wieder zu öffnen). In der Hoffnung, dass jemand etwas Fachwissen beibringen kann, wie er dieses Problem angehen kann.

Danke!

+0

Wie wäre es mit TinyDB? http://tinydb.readthedocs.io/en/latest/ – Grimmy

Antwort

0

Sie sind Anfügen tatsächlich das Update dict an das bestehende dict

# write the initial file 
import json 

OneDayWeather_data = {'a':'b'} 

with open('test.json', 'w') as f: 
    json.dump(OneDayWeather_data, f) 

OneDayWeather_data = {'c':'d'} 

# open the initial file and attempt to append 
with open('test.json','r+') as f: 
    dic = dict(json.load(f)) 
    dic.update(OneDayWeather_data) 
    json.dump(dic, f) 

# reopen the appended file 
with open('test.json', 'r') as f2: 
    json_object = json.load(f2) 

In diesem Stadium sieht Ihr test.json wie

{"a": "b"}{"a": "b", "c": "d"} 

Sie trennen können lesen/update/schreiben

with open('test.json','r') as f: 
    dic = dict(json.load(f)) 
    dic.update(OneDayWeather_data) 
with open('test.json', 'w') as f: 
    json.dump(dic, f) 

Ähnliche Antwort kann in How to append in a json file in Python?

gefunden werden
+0

Danke! Arbeitete perfekt. –

Verwandte Themen