2016-07-18 24 views
0

写配置文件我有一个字典这样维护的意见,而在Python

dictvalues = {'NAME':'Zara', 'SUBJECT':'English', 'CLASS ':'First'} 

我有这样

[OPTIONS] 

;the following specifies the name of student 
NAME = "Zara" 
;The following specifies Subject 
SUBJECT = "MATHS" 

;The Following specifies the Marks 

MARKS = "55" 

我希望我的config.ini文件基础上更新的config.ini字典

;the following specifies the name of student 
NAME = "Zara" 
;The following specifies Subject 
SUBJECT = "MATHS" 

;The Following specifies the Marks 

MARKS = "55" 


CLASS = "FIRST" 

以下代码将删除comments.Which是必需的。

import ConfigParser 

data = {'NAME': 'Zara', 'SUBJECT': 'English', 'CLASS': 'First'} 

Config = ConfigParser.ConfigParser() 
Config.optionxform = str 
Config.read("config.ini") 


for section in Config.sections(): 
    for key in data.keys(): 
     Config.set(section, key,'"{}"'.format(data[key])) 

with open("config.ini", 'w+') as f: 
    Config.write(f) 
+0

据我所看到的,configparser模块用来刚刚扔掉的意见(空行),因此它如果你需要保留评论,这不会有太大用处。它确实跟踪行号,但仅使用该信息生成错误消息;它不记录定义选项的行号,消除了重新读取文件的天真方法,并用新的选项行替换了定义选项的行。你最好的选择可能是使用PLY或其他一些Python解析器生成器编写自己的配置文件解析器,但这也是一项不平凡的任务。 – rici

回答

0

如果你定义与"你的字典应该按照预期的输出:

data = {'NAME': '"Zara"', 'SUBJECT': '"English"', 'CLASS': '"First"'} 
+0

不能这样做“数据”它是我的函数的输入 – user2591307

+0

我的意思是说数据是我的函数的参数 – user2591307

+0

@ user2591307您仍然可以添加'“':'”{}“。格式(数据[键])' – DeepSpace