python的配置解析

来源:互联网 发布:大宝眼霜怎么样 知乎 编辑:程序博客网 时间:2024/06/06 04:26

python中配置文件的格式为:中括号[]内包含section,例如conf.cfg文件内容如下:

[db]
db_passwd=test
user=test
[host]
ip=1
name=2

注:在该文件中,有两个section,分别为db,host。在db中,有两个option,分别为db_passwd和user,其对应的值分别为test,test

python自带的有一个包ConfigParser可以用来解析该类配置文件,其用法总结如下:

 引入该包:import ConfigParser
用法:
1.初始化并读取文件:
conf=ConfigParser.ConfigParser();
conf.read("conf.cfg")
2.获取文件信息
s=conf.sections()#获取所有的sections:db,host
m=conf.options("db")#获取指定的section下的options,即读取指定section下的key列表
n=conf.items("db")#获取指定的section下的所有items,即读取指定section下的key value对
c=conf.get("db","db_passwd")#获取指定的section和option下value
c=conf.getint("db","db_passwd")#按照类型读取,类似的用法还有getfloat,getboolean
3.修改文件信息
conf.set("db","db_passwd","testtest")#改写指定的section和option下的value值,如果option不存在,则新增该option
conf.add_section("db_test")#增加新的section
conf.write(open("dconf.cfg","w"))#该写完记得会写到配置文件中
 
4.删除文件信息
conf.remove_option("db","db_passwd")#移除指定的section下的option
conf.remove_section("db")#移除指定的section,该section下的所有option都被删除
conf.write(open("conf.cfg","w"))#移除完回写
 
ConfigParser基本可以满足对配置文件的解析,获取和修正,由于它是python自带的包,使用起来较为方便,不用单独安装,但其存在一些问题:
1.认为dict都是无序的,因此修改完提交后,sections之间的顺序被打乱
2.重写后,源文件的注释不能保留
3.不能嵌套
 
恰恰是这些问题,导致很多不方便,例如:文件修改后用vimdiff很难一下看出修改前后的异同。怎么解决这些问题呢?很感谢有了一个开源的包:configobj。这个包是一个开源的独立的包,因此需要在python外独立安装,后面会再述安装的问题,先来看如何使用:
 
引入:from configobj import ConfigObj
用法:
1.初始化文件:
conf = ConfigObj("conf.cfg")
2.读取文件:
    conf["db"]#读取指定section下的key value对
    conf["db"]["db_passwd"]#读取指定section和option下的值
    
3.修改文件信息
     conf["db"]["db_passwd"]=“aaa”#读取指定section和option下的值,如果指定的option不存在,则在该section下新建该option
    conf["test"]={}#新增section,追加到原文件的结尾
    conf.write()#修改完回写
4.删除文件信息
     del conf["db"]["user"]#删除指定section下的option
    del conf["db"] #删除指定的section,该section下所有option一并删除
   conf.write()#修改完回写
5.配置文件另存为
    conf.filename="newconf.cfg"#修改新名字
    conf.write()#回写
 
 由上可以看出,configobj使用更为简单,其最大的好处是可以修正ConfigParser包的缺陷,修改后不会修改原配置文件中sections间的先后顺序,支持嵌套,修改后源文件的注释保留。但configobj也有缺点:
一。需要下载包,单独安装了,我们就来说说安装的事情:
1.首先下载安装包,我是从http://www.voidspace.org.uk/python/configobj.html#downloading中下载的configobj-4.7.2.zip
2.解析文件:unzip configobj-4.7.2.zip
3.安装文件:进入到解压后的文件夹,之行命令:python setup.py install 这里要注意,setup.py会拷贝文件到python的bin目录下,因此要保证拷贝的源和目的文件夹的权限都是可写的,否则会报无权限的错误,导致安装失败
4.安装成功,那么就去试试吧
二。会把源文件中的tab键替换成空格
三。会把源文件中的options的值之间的逗号改成逗号加空格
 
应该还有其他的不足,以后慢慢发现吧~
嵌套的配置文件格式为:
[db]
db_passwd=test
user=test
[[table_name]]
table1=table1
获取table1时就可以:conf["db"]["table_name"]["table1"]
新增嵌套节点时可以如下操作:
conf[“table”]={}
string={
key1=1
key2=2
key3={
key3
key4}
}
conf.[“table”]=string
conf.write()
原创粉丝点击