如何更新自定义配置文件的特定值?

时间:2016-07-04 22:26:26

标签: python configuration-files

假设我有一个包含此内容的配置文件:

{"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的新手)

2 个答案:

答案 0 :(得分:1)

这看起来像json所以你可以:

import json

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

但请注意,json dict没有订单。 因此,不保证元素的顺序(通常不需要)json列表虽然有订单。

答案 1 :(得分: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