用ConfigParser模块读写配置文件——Python

对于功能较多、考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置?

1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑的问题。

2)用配置文件,通过在程序中读配置文件获取配置,用户改变配置后重新写入配置文件,即使程序崩溃或者关闭,配置依然能够保存下来。

3)用数据库来存储配置变量,也能长久保存,不过读写数据库也是重量级操作,不太方便。

 

最近在写一个基于wxPython的GUI程序,需要用到配置文件,本来打算用xml文件来存储,网上看了一圈,读写xml也挺麻烦,加上该程序规模较小,不用太复杂的配置,考虑用简单的读写文件就行,在《Python基础教程第二版》当中看到有ConfigParser模块,挺简单。就拿来用了。

使用ConfigParser模块,配置文件可以随便取名,唯一需要注意的是,配置文件的内容有格式要求:

一个配置文件分为几个section,每个section的名字要用中括号括起来,中括号下面的变量和变量值以等号隔开。

假设有一个配置文件叫做Config.txt,那么Config.txt的内容格式应该像下面这样:

[numbers]

pi=3.1516926

maxfilesize=128*1024*1024

[msg]

error=sorry,an error occured.

tipmsg=your input is invalid,please check and submit again.

 

如何用ConfigParser读写配置文件?

加载配置文件:objConfigParser.read(filepath)

读取配置变量:objConfigParser.get(section,variblename)或者objConfigParser.getInt(section,variblename),如果知道该变量是int型的话

写入(添加)配置变量到缓存:objConfigParser.set(section,variblename,newValue),

添加新的section:objConfigParser.add_section(sectionName)

写入文件,使修改生效:objConfigParser.write(open(filepath,'w'))

示例程序:

1 def testConfig():
2     CONFIGFILE='../metaData/config.txt'
3     config=ConfigParser()
4     config.read(CONFIGFILE)#加载配置文件
5     print config.getfloat('numbers', 'pi')#读取section为numbers的pi变量
6     config.set('numbers', 'pi', 3.14)#修改pi变量
7     #create a new section
8     config.add_section('a_new_section') #添加新的section
9     config.write(open(CONFIGFILE, "w"))#写入文件

 

posted @ 2016-04-20 20:45  morein2008  阅读(793)  评论(0编辑  收藏  举报