ConfigParser模块记录
ConfigParser模块
python版本2.6
ConfigParser模块用于读取、写入配置文件
配置文件的文件后缀没有特别要求,一般以ini结尾
配置文件的结构一般以section和option组成,以下为configtest.ini内容
[test1]
value1 = 1
value2 : 2
以上中test1表示section,option可用等号也可用冒号组成
该模块有三个类,通常都是使用ConfigParser.ConfigParser([defaults[,dict_type]])来创建一个实例对象,而后再进行各项操作
以下为一段对configtest.ini配置文件进行写入的代码
def configwritetest(): try: cf = ConfigParser.ConfigParser() #cf.add_section('default2') cf.add_section( 'test1') cf.set( 'test1', 'value1' , '1') cf.set( 'test1', 'value2' , '2') with open( 'configtest.ini', ' wb') as f: cf.write(f) except Exception as a: print a finally: print 'end' pass
以下为一段对configtest.ini配置文件进行读取的代码
def configreadtest(): try: cf = ConfigParser.ConfigParser() cf.read( 'configtest.ini') print cf.has_section( 'test1') print cf.get( 'test1', 'value1' ) print cf.get( 'test1', 'value2' ) print cf.getint( 'test1', 'value2' ) print cf.getfloat( 'test1', 'value2' ) print cf.getboolean( 'test1', 'value1' ) print cf.items( 'test1') print cf.options( 'test1') except Exception as a: print a finally: print 'end' pass
两段代码都是常用的对配置文件进行写入和读取的操作,通俗易懂,不多说。在配置文件中,有一个特殊的section是保留的,即“DEFAULT”,在写入和读取操作中都不能涉及到该section通但该section却常用于初始化,有其妙用之处。比如configtest.ini的内容如下
[DEFAULT]
a = one
[test1]
value2 = 2
value1 = %(a)s1
def configreadtest2(): try: cf = ConfigParser.ConfigParser() cf.read( 'configtest.ini') print cf.defaults() print cf.get( 'test1', 'value1' ) print cf.get( 'test1', 'value2' ) except Exception as a: print a finally: print 'end' pass 以上程序运行后结果如下: {'a': 'one'} one1 2 end
可以发现,%(a)s已经被转换为a的值one,如此便能用于解决一些需要灵活配置的场景
而ConfigParser.ConfigParser([defaults[,dict_type]])的defaults参数也有其妙用之处
比如configtest.ini的内容如下
[DEFAULT]
a = one
[test1]
value3 = %(b)d1
value2 = 2
value1 = %(a)s1
def configreadtest(): try: cf = ConfigParser.ConfigParser({ 'b':2 }) cf.read( 'configtest.ini') print cf.defaults() print cf.get( 'test1', 'value1' ) print cf.get( 'test1', 'value2' ) print cf.get( 'test1', 'value3' ) except Exception as a: print a finally: print 'end' pass 以上程序运行后结果如下: {'a': 'one', 'b': 2} one1 2 21 end
可以看出{ 'b' :2 }也成为了DEFAULT中的option,如此更可以灵活的在程序中进行相应的配置来解决一些特殊场景的需求,当defaults参数中的option与配置文件中本身的option出现相同情况时,依旧以配置文件本身的option为准。