【2】文件读写-2-4-python读写conf配置文件--ConfigParser

之前会把配置信息以hash的形式写在config.py文件中,然后通过import config.py来调用,但是看config.py因为是dict数据格式,看上去不够酷,这里介绍一种更容易直观阅读配置信息的文件。

1.基本的读取配置文件

-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

2.基本的写入配置文件

-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。

配置文件如下:

[db]
db_port = 3306
db_user = root
db_host = 127.0.0.1
db_pass = xgmtest

[concurrent]
processor = 20
thread = 10

3.配置文件的读取:

#/usr/bin/python

import ConfigParser
import string, os, sys

cf = ConfigParser.ConfigParser()
cf.read("test.conf")

#return all section
secs = cf.sections()
print 'sections:', secs

opts = cf.options("db")
print 'options:', opts

kvs = cf.items("db")
print 'db:', kvs

#read by type
db_host = cf.get("db", "db_host")
db_port = cf.getint("db", "db_port")
db_user = cf.get("db", "db_user")
db_pass = cf.get("db", "db_pass")

#read int
threads = cf.getint("concurrent", "thread")
processors = cf.getint("concurrent", "processor")

print "db_host:", db_host
print "db_port:", db_port
print "db_user:", db_user
print "db_pass:", db_pass

print "thread:", threads
print "processor:", processors

#modify one value and write to file

4.修改和写入文件

cf.set("db", "db_pass", "xgmtest")
cf.write(open("test.conf", "w"))

将一个hash写入到一个ini文件中

def dump_dic2ini(conf_dic,output_file):
	"""
	write dict to ini file
	"""
	cf = ConfigParser.ConfigParser()
	for one_key in conf_dic.keys():
		cf.add_section(one_key)
	for k1 in conf_dic.keys():
		for k2 in conf_dic[k1].keys():
			cf.set(k1,k2,conf_dic[k1][k2])
	with open(output_file,'w') as configfile:
		cf.write(configfile)

关键是需要先建立section

参考资料:

http://blog.chinaunix.net/uid-24585858-id-4820471.html

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn