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

时间:2023-03-08 16:15:23
用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'))

示例程序:

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