2016-07-04 14 views
0

Angenommen, ich habe eine Konfiguration txt-Datei mit folgendem Inhalt:Wie kann ich einen bestimmten Wert für eine benutzerdefinierte Konfigurationsdatei aktualisieren?

{"Mode":"Classic","Encoding":"UTF-8","Colors":3,"Blue":80,"Red":90,"Green":160,"Shortcuts":[],"protocol":"2.1"} 

Wie kann ich einen bestimmten Wert wie "Red":90 zu "Red":110 in der Datei ändern, ohne das ursprüngliche Format zu ändern?

Ich habe mit configparser und configobj versucht, aber da sie für .INI-Dateien ausgelegt sind, konnte ich nicht herausfinden, wie man es mit dieser benutzerdefinierten Konfigurationsdatei arbeiten lassen kann. Ich habe auch versucht, die Zeilen zu trennen, die nach den Schlüsselwörtern suchen, deren Werte ich ändern wollte, aber ich konnte die Datei nicht auf die gleiche Weise speichern wie zuvor. Irgendwelche Ideen, wie man das löst? (Ich bin sehr neu in Python)

Antwort

1

das sieht aus wie json so kann man:

import json 

obj = json.load(open("/path/to/jsonfile","r")) 
obj["Blue"] = 10 
json.dump(obj,open("/path/to/mynewfile","w")) 

aber bewusst sein, dass ein json dict keine Bestellung hat. So ist die Reihenfolge der Elemente nicht garantiert (und normalerweise wird es nicht benötigt) json Listen haben eine Reihenfolge.

+0

Dies ist die richtige Lösung !! Danke vielmals! – Alex

0

Hier ist, wie Sie es tun können:

import json 

d = {} # store your data here 

with open('config.txt','r') as f: 
    d = json.loads(f.readline()) 

d['Red']=14 
d['Green']=15 
d['Blue']=20 
result = "{\"Mode\":\"%s\",\"Encoding\":\"%s\",\"Colors\":%s,\ 
     \"Blue\":%s,\"Red\":%s,\"Green\":%s,\"Shortcuts\":%s,\ 
     \"protocol\":\"%s\"}"%(d['Mode'],d['Encoding'],d['Colors'], 
           d['Blue'],d['Red'],d['Green'], 
           d['Shortcuts'],d['protocol']) 


with open('config.txt','w') as f: 
    f.write(result) 
    f.close() 

print result