文章目錄
- 一. 讀取配置
- 二. 添加配置
- 三. 上碼
- 四.應用示例
一. 讀取配置
- 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)