一. 读取配置
- read(filename) 直接读取ini文件内容
- sections() 获取所有的section,并以列表的形式返回
- options(section) 获取该section的所有option
- items(section) 获取该section的所有键值对
- get(section,option) 获取section中option的值,返回为string类型
- getint(section,option) 获取section中option的值,返回为int类型
二. 添加配置
- add_section(section) 添加一个新的section
- set( section, option, value) 对section中的option进行设置
更需要调用write写入配置文件
三. 上码
"""
# config.ini 配置文件
[mysql]
host = 192.168.1.1
port = 3306
user = root
password = password
charset = utf-8
[mongo]
host = 192.168.1.1
port = 3357
user = root
password = password
"""
import configparser
#读取
cf=configparser.ConfigParser()
cf.read("config.ini")
print(cf)
# <configparser.ConfigParser object at 0x00000000011F79E8>
secs=cf.sections() # 获得所有区域
print("sections:",secs)
# sections: ['mysql', 'mongo']
opts=cf.options("mysql") # 获取区域的所有key
print(opts)
# ['host', 'port', 'user', 'password', 'charset']
#打印出每个区域的所有属性
for sec in secs:
print(cf.options(sec))
# ['host', 'port', 'user', 'password', 'charset']
# ['host', 'port', 'user', 'password']
items = cf.items("mysql") # 获取键值对
print(items)
# [('host', '192.168.1.1'), ('port', '3306'), ('user', 'root'), ('password', 'password'), ('charset', 'utf-8')]
val=cf.get("mysql","host")
print(val) # 192.168.1.1
print(type(val)) #--><class 'str'>
val=cf.getint("mysql","port")
print(val) # 3306
print(type(val)) #--><class 'int'>
#设置
cf.set("redis","host","192.168.1.2")
cf.add_section("newsection")
cf.set("redis","port","1000")
#写入
cf.write(open("config.ini","w"))
#判断
ret=cf.has_section("redis") #判断存不存在
print(ret) # True
cf.remove_section("redis")#删除
ret=cf.has_section("redis") #判断存不存在
print(ret) # False
四.应用示例
"""
本代码主要功能是解析配置文件,目前支持INI类的配置文件解析
仅支持读取配置文件,不支持修改配置文件
"""
import os
import configparser
class ConfigReader():
"""
配置文件读取器,
目前仅支持读取INI类的配置文件,不支持修改
"""
def __init__(self, file) -> None:
if not os.path.exists(file):
raise FileNotFoundError("config file is not exists")
self.config = configparser.ConfigParser()
self.config.read(file)
def get_items_by_section(self, section) -> dict:
"""
获取section下的键值对
返回字典格式
"""
if self.config.has_section(section):
section_items = self.config.items(section)
return dict(section_items)
else:
raise ValueError("section is not exists")
if __name__ == "__main__":
config_file = "D:\myprojects\python\config\config.ini"
c = ConfigReader(config_file)
sign_info = c.get_items_by_section("anyway")
print(sign_info)