2016-07-04 91 views
0

假設我有此內容的配置txt文件:如何更新自定義配置文件上的特定值?

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

我怎樣才能更改文件中像"Red":90一個特定值"Red":110而不改變其原來的格式?

我試着用configparser和configobj,但是因爲它們是爲.INI文件設計的,所以我無法弄清楚如何使它與這個自定義配置文件一起工作。我也嘗試拆分搜索關鍵字女巫值的行,我想改變,但不能像以前一樣保存文件。任何想法如何解決這個問題? (我很新的Python)

回答

1

這看起來像JSON所以,你可以:

import json 

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

但是要知道,一個JSON字典沒有一個訂單。 因此,元素的順序不能保證(通常不需要)json列表有順序。

+0

這是正確的解決方案!非常感謝! – Alex

0

這裏是你如何能做到這一點:

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