Posted in Python onAugust 30, 2014
ini文件是windows中经常使用的配置文件,主要的格式为:
[Section1] option1 : value1 option2 : value2
python提供了一个简单的模块ConfigParser可以用来解析类似这种形式的文件。对于ConfigParser模块可以解析key:value和key=value这样的类型,对于#和;开头的行将会自动忽视掉。相当于注释行。常用的函数:
ConfigParser.RawConfigParser() RawConfigParser Object的操作有: .sections() : 返回所有可用的section .addsection(sectionname) :添加section .set(sectionname, optionname, optionvalue): 添加option .hassection(sectionname) :判断 .options(sectionname) : 返回section下可用的option .hasoption(sectionname, optionname) : 判断 .read(filename) : 读取文件 .wrie(filename) : 将RawConfigParser对象写到文件中 .get(sectionname, optionname) : 获取值, 默认的是返回string类型 .getfloat, .getint, .getboolean : 获取不同类型的返回值,参数和get的参数一样 .items(sectionname) :列出section下的所有key:value .remove(sectionname) :删除section .remove(sectionname, option_name) : 删除section下的某个option
Demo -- 生成文件
$ cat ini_demo.py # -*- coding:utf-8 -*- import ConfigParser def gen_ini(): ftest = open('test','w') config_write = ConfigParser.RawConfigParser() config_write.add_section('Section_a') config_write.add_section('Section_b') config_write.add_section('Section_c') config_write.set('Section_a','option_a1','apple_a1') config_write.set('Section_a','option_a2','banana_a2') config_write.set('Section_b','option_b1','apple_b1') config_write.set('Section_b','option_b2','banana_b2') config_write.set('Section_c','option_c1','apple_c1') config_write.set('Section_c','option_c2','banana_c2') config_write.write(ftest) ftest.close() if __name__ == "__main__": gen_ini()
最后生成的文件为:
$ cat test [Section_a] option_a1 = apple_a1 option_a2 = banana_a2 [Section_c] option_c2 = banana_c2 option_c1 = apple_c1 [Section_b] option_b1 = apple_b1 option_b2 = banana_b2 Demo -- 读取文件 def read_ini(): config_read = ConfigParser.RawConfigParser() config_read.read('test') print config_read.sections() print config_read.items('Section_a') print config_read.get('Section_a','option_a1')
最后的结果为:
['Section_a', 'Section_c', 'Section_b'] [('option_a2', 'banana_a2'), ('option_a1', 'apple_a1')] apple_a1
Python中使用ConfigParser解析ini配置文件实例
- Author -
junjie声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@