ConfigParser是Python内置的一个读取配置文件的模块,用它来读取和修改配置文件非常方便,本文介绍一下它的基本用法。
假设当前目录下有一个名为sys.conf
的配置文件,其内容如下:
[db]
db_host=127.0.0.1
db_port=22
db_user=root
db_pass=root123
[concurrent]
thread = 10
processor = 20
注:配置文件中,各个配置项其实是用等号'='隔开的键值对,这个等号两边如果有空白符,在处理的时候都会被自动去掉。但是key之前不能存在空白符,否则会报错。
配置文件即conf文件,其文件结构多为键值对的文件结构,比如上面的sys.conf文件。
conf文件有2个层次结构,[]
中的文本是section的名称,下面的键值对列表是item,代表每个配置项的键和值。
In [19]:
import ConfigParser
In [ ]:
cf = ConfigParser.ConfigParser()
cf.read('./sys.conf')
section即[]
中的内容。
In [10]:
s = cf.sections()
print '【Output】'
print s
options即某个section下的每个键值对的key.
In [11]:
opt = cf.options('concurrent')
print '【Output】'
print opt
In [12]:
items = cf.items('concurrent')
print '【Output】'
print items
cf对象有get()、getint()、getboolean()、getfloat()四种方法来读取不同数据类型的配置项的值。
In [13]:
db_host = cf.get('db','db_host')
db_port = cf.getint('db','db_port')
thread = cf.getint('concurrent','thread')
print '【Output】'
print db_host,db_port,thread
比如要修改一下数据库的密码,可以这样修改:
In [15]:
cf.set('db','db_pass','newpass')
# 修改完了要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)
In [21]:
cf.add_section('log')
cf.set('log','name','mylog.log')
cf.set('log','num',100)
cf.set('log','size',10.55)
cf.set('log','auto_save',True)
cf.set('log','info','%(bar)s is %(baz)s!')
# 同样的,要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)
执行上面代码后,sys.conf文件多了一个section,内容如下:
[log]
name = mylog.log
num = 100
size = 10.55
auto_save = True
info = %(bar)s is %(baz)s!
In [22]:
cf.remove_section('log')
# 同样的,要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)
In [23]:
cf.remove_option('db','db_pass')
# 同样的,要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)