使用configparser模块读写ini文件,如果是python 2.7 使用为 import ConfigParser,python 3.2 以后的版本中 ,应当使用import configparser。Python的configparser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。模块所解析的ini配置文件是由多个section构成,每个section名用中括号‘[]’包含,每个section下可有多个配置项类似于key-value形式,例如:

[sec_a]
a_key1 = 20
a_key2 = 10

[sec_b]
b_key1 = 121
b_key2 = b_value2
b_key3 = abc
b_key4 = 127.0.0.1


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类的修改写入


      ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。通过它,可以将经常需要改变的参数保存起来(而且还可读),使程序更加的灵活。


先给出一个ini文件的示例。

[sec_a]
a_key1 = 20
a_key2 = 10

[sec_b]
b_key1 = 121
b_key2 = b_value2
b_key3 = abc
b_key4 = 127.0.0.1


Python代码

>>> import configparser

# 初始化

>>> conf = configparser.ConfigParser()
>>> conf.read("test.ini")

['test.ini']

# 获取指定的section, 指定的option的值

>>> name = conf.get("sec_a","a_key1")
>>> print(name)
20
>>> name2 = conf.get("sec_a","a_key2")
>>> print(name2)
10

# 获取所有的section

>>> sections = conf.sections()
>>> print(sections)
['sec_a', 'sec_b']

# 获取该section的所有option的值

>>> print(conf.options("sec_a"))
['a_key1', 'a_key2']
>>> print(conf.options("sec_b"))
['b_key1', 'b_key2', 'b_key3', 'b_key4', 'b_key5']

# 获取该section的所有的键值对

>>> print(conf.items("sec_a"))
[('a_key1', '30'), ('a_key2', '10')]
>>> print(conf.items("sec_b"))
[('b_key1', '121'), ('b_key2', 'b_value2'), ('b_key3', '$r'), ('b_key4', '127.0.0.1')]

# 更新指定section, option的值

>>> conf.set("sec_a", "a_key1", "30")
>>> print(conf.get("sec_a","a_key1"))
30
# 写入指定section, 增加新option的值

>>> conf.set("sec_b", "b_key5", "123")
>>> print(conf.get("sec_b","b_key5"))
123

# 添加新的 section和option的值

>>> conf.add_section("sec_c")
>>> conf.set("sec_c","c_key1","123456")

>>> print(conf.sections())
['sec_a', 'sec_b', 'sec_c']

# 修改完之后要记得使用configparser.write()进行写入操作,否则修改的内容不会保存到配置文件

>>> conf.write(open("test.ini","w"))


最后结果如下:

[sec_a]
a_key1 = 30
a_key2 = 10

[sec_b]
b_key1 = 121
b_key2 = b_value2
b_key3 = abc
b_key4 = 127.0.0.1
b_key5 = 123

[sec_c]
c_key1 = 123456