python读取ini配置的类封装

Posted 小锋学长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = rC:UsersSXFDesktopconfig.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配置的类封装的主要内容,如果未能解决你的问题,请参考以下文章

Python基础之读取基础配置模块封装

基于Python封装读取ini文件的工具类Python+Requests库做接口自动化框架设计系列多测师

基于Python封装读取ini文件的工具类Python+Requests库做接口自动化框架设计系列多测师

转 python3 读取 ini配置文件

通过python读取ini配置文件

通过python读取ini配置文件