超详细:Python读取配置文件 ConfigParser读取ini

  • 1.读取
  • 2.方法概览
  • 3.1 sections() 得到所有的section,返回列表
  • 3.2 得到section下的所有option
  • 3.3 items 得到section的所有键值对
  • 3.4 读取布尔值
  • 3.5 得到section中的option值,返回string/int类型的结果
  • 3.6 删除键值对,同样的还设有remove_section(section)
  • 3.7上面都是在内存小打小闹,要写到文件才生效
  • 3.例外,没有键值对


1.读取

"""
[testini]
inf1="配置一"
inf2="配置二"
status=True
[test2]
config=111
conf=222
"""
首先进行实例化
cf = configparser.ConfigParser()
file = cf.read("test.ini", encoding="utf-8")

2.方法概览

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

-write(fp)                              将config对象写入至某个 .ini 格式的文件  
-add_section(section)                   添加一个新的section
-set( section, option, value   对section中的option进行设置,需要调用write将内容写入配置文件
-remove_section(section)                删除某个 section
-remove_option(section, option)         删除某个 section 下的 option
"""

3.1 sections() 得到所有的section,返回列表

sections() 得到所有的section,返回列表
sec = cf.sections()
print(sec)
-->['testini', 'test2']

3.2 得到section下的所有option

得到section下的所有option
opt = cf.options("testini")
print(opt)
-->['inf1', 'inf2', 'status']

3.3 items 得到section的所有键值对

items 得到section的所有键值对
value = cf.items("testini")

dict(value)转换成字典类型

dic = dict(value)
print(value)
print(dic)
-->
[('inf1', '"配置一"'), ('inf2', '"配置二"'), ('status', 'True')]
{'inf1': '"配置一"', 'inf2': '"配置二"', 'status': 'True'}

3.4 读取布尔值

读取布尔值
status = cf.getboolean('testini', 'status')
print(status)

3.5 得到section中的option值,返回string/int类型的结果

get(section,option) 得到section中的option值,返回string/int类型的结果
cur_inf = cf.get("testini", "inf1")
cur_inf2 = cf.getint("test2", "conf")
print(cur_inf, cur_inf2)
-->"配置一" 222

3.6 删除键值对,同样的还设有remove_section(section)

删除键值对,同样的还设有remove_section(section)
# cf.remove_section('testini')
cf.remove_option('testini', 'status')

3.7上面都是在内存小打小闹,要写到文件才生效


此时的配置保存在内存中,需要写入文件方可生效
with open("test.ini", "w+") as f:
    cf.write(f)

3.例外,没有键值对

# 如果ini里面没有键值对
"""
[testini]
192.168.0.1
192.168.0.2
192.168.0.3
[test2]
10.15.1.0
10.15.1.2
"""
此时再调用ConfigParser读取便会报出如下错误:
-->ConfigParser.ParsingError: File contains parsing errors: test.ini

import ConfigParser

config = configparser.ConfigParser(allow_no_value=True)