python解析ini格式配置文件

简介

Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件。 

 

 

my.ini

现有一个配置文件my.ini,其格式类似于标准的.ini形式,如下所示

 

[db]
host = daniubiji.cn
port = 3306
user = userdaniu
pwd = mimadaniu

[run]
timeout = 3600
thread = 24

#[daniu]
#kanbujian=1

[deleteSection]
deleteOption=1

[unicodeSection]
unicodeOption = 大牛

 

配置文件格式说明

        a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option; 
        b) section 用 [sect_name] 表示,每个option是一个键值对,使用分隔符 = 或 : 隔开;
        c) 在 option 分隔符两端的空格会被忽略掉 
        d) 配置文件使用 # 和 ; 注释

 

基本操作

使用python的ConfigParser来完成对配置文件的基本操作,包括读取、修改、删除、添加、判断元素是否存在等。

场景基本操作有
        -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() 函数。

 

代码实现

下面列出了一下基本操作:
import ConfigParser
import sys

#实例化configParser
conf = ConfigParser.ConfigParser()
conf.read("my.ini")

#获取sections列表
sections = conf.sections()
print "sections:" + str(sections)

#获取options列表
options = conf.options("db")
print "options:" + str(options)

#获取db下所有的key and values
kvs = conf.items("db")
print "kvs:" + str(kvs)

#获取属性的值
host = conf.get("db", "host")
port = conf.getint("db", "port")
user = conf.get("db", "user")
pwd  = conf.get("db", "pwd")

print "host: " + host
print "port: " + str(port)
print "user: " + user
print "pwd: "  + pwd

 

另外,还有方法如下

#判断sections及option是否存在
isHasSection = conf.has_section("daniu")
print "isHasSection: " + str(isHasSection)

isHasOption = conf.has_option("db", "port")
print "isHasOptions: " + str(isHasOption)

#删除section及option
isDeleteOption = conf.remove_option("deleteSection", "deleteOption")
isDeleteSection = conf.remove_section("deleteSection")

#修改option的值
conf.set("run", "thread", 24)

#添加section的值
conf.add_section("new_section")

#conf.write(open("my.ini", "w"))
conf.write(sys.stdout)

 

保存配置

保存配置,set、 remove_option、 add_section 和 remove_section 等操作并不会修改配置文件,write 方法可以将 ConfigParser 对象的配置写到文件中
#conf.write(open("my.ini", "w"))
conf.write(sys.stdout)

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注