当前位置: 首页 > 工具软件 > ini-parser > 使用案例 >

python configparser 读取 ini类型的配置文件

乌俊健
2023-12-01

一. 读取配置

  • 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)

 类似资料: