使用ConfigParser模块读写ini文件(http://blog.csdn.net/linda1000/article/details/11729561)
ConfigParserPython的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。模块所解析的ini配置文件是由多个section构成,每个section名用中括号‘[]’包含,每个section下可有多个配置项类似于key-value形式,例如:
ConfigParser模块以ConfigParser类为例,其操作基本分为三类:1)初始化;2)读取配置;3)写入配置。
1. ConfigParser 初始化
使用ConfigParser 首选需要初始化实例,并读取配置文件:
cf = ConfigParser.ConfigParser() cf.read("配置文件名")
2.基本的读取配置文件
-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()函数。
3.基本的写入配置文件
-add_section(section)添加一个新的section;
-set(section,option,value)对section中的option进行设置,需要调用write将内容写入配置文件;
-write(strout)将对configparser类的修改写入。
例如:
test.conf #文件名
[sec_a]
a_key1
=
20
a_key2
=
10
[sec_b]
b_key1
=
121
b_key2
=
b_value2
b_key3
=
$r
b_key4
=
127.0
.
0.1
import configparser #初始化 cf = configparser.ConfigParser() #读取加载文件 cf.read('test.conf') # 读取配置文件 secs = cf.sections() print("secs",secs) opts = cf.options('sec_a') print("options",opts) kvs = cf.items("sec_a") print("sec_a",kvs) #read by type str_val = cf.get("sec_a","a_key1") int_val = cf.getint("sec_a","a_key2") print("str_val",str_val) print("int_val",int_val) #写入配置文件 #update value cf.set("sec_b","b_key3","new_$r") #set a new value cf.set("sec_b","b_newkey","new_value") #create a new section cf.add_section("a_new_section") cf.set("a_new_section","new_key","new_value") #write back to configure file cf.write(open("test.conf","w"))
运行结果如下:
secs ['sec_a', 'sec_b']
options ['a_key1', 'a_key2']
sec_a [('a_key1', '20'), ('a_key2', '10')]
str_val 20
int_val 10
下面用python生成一个configparser的文件格式:
import configparser config = configparser.ConfigParser() config["DEFAULT"] = {'ServerAliveInterval': '45', 'Compression': 'yes', 'CompressionLevel': '9'} config['bitbucket.org'] = {} config['bitbucket.org']['User'] = 'hg' config['topsecret.server.com'] = {} topsecret = config['topsecret.server.com'] topsecret['Host Port'] = '50022' # mutates the parser topsecret['ForwardX11'] = 'no' # same here config['DEFAULT']['ForwardX11'] = 'yes' with open('example.ini', 'w') as configfile: config.write(configfile)