python

超轻量级php框架startmvc

python读取ini配置的类封装代码实例

更新时间:2020-08-19 03:42:01 作者:startmvc
这篇文章主要介绍了python读取ini配置的类封装代码实例,文中通过示例代码介绍的非常详细

这篇文章主要介绍了python读取ini配置的类封装代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

此为基础封装,未考虑过多异常处理


# coding:utf-8
import configparser
import os

class IniCfg():
 def __init__(self):
 self.conf = configparser.ConfigParser()
 self.cfgpath = ''

 def checkSection(self, section):
 try:
 self.conf.items(section)
 except Exception:
 print(">> 无此section,请核对[%s]" % section)
 return None
 return True

 # 读取ini,并获取所有的section名
 def readSectionItems(self, cfgpath):
 if not os.path.isfile(cfgpath):
 print(">> 无此文件,请核对路径[%s]" % cfgpath)
 return None
 self.cfgpath = cfgpath
 self.conf.read(cfgpath, encoding="utf-8")
 return self.conf.sections()

 # 读取一个section,list里面对象是元祖
 def readOneSection(self, section):
 try:
 item = self.conf.items(section)
 except Exception:
 print(">> 无此section,请核对[%s]" % section)
 return None
 return item

 # 读取一个section到字典中
 def prettySecToDic(self, section):
 if not self.checkSection(section):
 return None
 res = {}
 for key, val in self.conf.items(section):
 res[key] = val
 return res

 # 读取所有section到字典中
 def prettySecsToDic(self):
 res_1 = {}
 res_2 = {}
 sections = self.conf.sections()
 for sec in sections:
 for key, val in self.conf.items(sec):
 res_2[key] = val
 res_1[sec] = res_2.copy()
 res_2.clear()
 return res_1

 # 删除一个 section中的一个item(以键值KEY为标识)
 def removeItem(self, section, key):
 if not self.checkSection(section):
 return
 self.conf.remove_option(section, key)

 # 删除整个section这一项
 def removeSection(self, section):
 if not self.checkSection(section):
 return
 self.conf.remove_section(section)

 # 添加一个section
 def addSection(self, section):
 self.conf.add_section(section)

 # 往section添加key和value
 def addItem(self, section, key, value):
 if not self.checkSection(section):
 return
 self.conf.set(section, key, value)

 # 执行write写入, remove和set方法并没有真正的修改ini文件内容,只有当执行conf.write()方法的时候,才会修改ini文件内容
 def actionOperate(self, mode):
 if mode == 'r+':
 conf.write(open(self.cfgpath, "r+", encoding="utf-8")) # 修改模式
 elif mode == 'w':
 conf.write(open(self.cfgpath, "w")) # 删除原文件重新写入
 elif mode == 'a':
 conf.write(open(self.cfgpath, "a")) # 追加模式写入

cfgpath = r'C:\Users\SXF\Desktop\config.ini'

inicfg = IniCfg()
sections = inicfg.readSectionItems(cfgpath)
print(sections)
content = inicfg.readOneSection('chaoji')
print(content)
dic = inicfg.prettySecToDic('chaoji')
print(dic)
dic = inicfg.prettySecsToDic()
print(dic)
inicfg.addSection('chaoji22')

content = inicfg.readOneSection('chaoji')
print(content)

测试ini


[chaoji]
chaoji_username = 123
chaoji_password = 456
[my]
soft_id = 789
sleeptime = asd
cnt_count = zxc

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python 读取 ini 配置 封装