[python] 一个INI配置文件封装模块


def ini_init(self,ini_dict:dict={})

def ini_init(self,ini_dict:dict={}):
        if os.path.exists(self.ini_f):
            print("exist")
        else:
            with open(self.ini_f,"w") as p:
                print("create ok")
            self.conf.read(self.ini_f)
            for idx in ini_dict:
                if not self.conf.has_section(idx):
                    self.conf.add_section(idx)
                    for idxx in ini_dict[idx]:
                        self.conf.set(idx,idxx,str(ini_dict[idx][idxx]))
            self.conf.write(open(self.ini_f,'w'))

没有就创建并设定键值;

def ini_read(self,ini_dict:dict={}):

def ini_read(self,ini_dict:dict={}):
        self.ini_init(ini_dict)
        self.conf.read(self.ini_f)
        for idx in ini_dict:
            for idxx in ini_dict[idx]:
                if "_bool" in idxx:
                    ini_dict[idx][idxx]=self.conf.getboolean(idx,idxx)
                elif "_int" in idxx:
                    ini_dict[idx][idxx]=self.conf.getint(idx,idxx)
                elif "_float" in idxx:
                    ini_dict[idx][idxx]=self.conf.getfloat(idx,idxx)
                else:
                    ini_dict[idx][idxx]=self.conf.get(idx,idxx)
        return True

根据键值返回对应得类型

def ini_write(self,ini_dict:dict={}):

def ini_write(self,ini_dict:dict={}):
        self.conf.read(self.ini_f)
        self.ini_init(ini_dict)
        for idx in ini_dict:
            for idxx in ini_dict[idx]:
                self.conf.set(idx,idxx,str(ini_dict[idx][idxx]))
        print("done")
        self.conf.write(open(self.ini_f,'w'))
        return True

将键值对写入

def __init__(self,file_path:str="./config.ini") -> None:

def __init__(self,file_path:str="./config.ini") -> None:
        '''
        设定ini文件路径
        '''
        self.ini_f = file_path
        self.conf = configparser.ConfigParser()

类初始化设定文件路径并生成对象

ALL

import configparser
import os

class Ini:
    def __init__(self,file_path:str="./config.ini") -> None:
        '''
        设定log文件路径
        '''
        self.ini_f = file_path
        self.conf = configparser.ConfigParser()

    def ini_init(self,ini_dict:dict={}):
        if os.path.exists(self.ini_f):
            print("exist")
        else:
            with open(self.ini_f,"w") as p:
                print("create ok")
            self.conf.read(self.ini_f)
            for idx in ini_dict:
                if not self.conf.has_section(idx):
                    self.conf.add_section(idx)
                    for idxx in ini_dict[idx]:
                        self.conf.set(idx,idxx,str(ini_dict[idx][idxx]))
            self.conf.write(open(self.ini_f,'w'))
    def ini_read(self,ini_dict:dict={}):
        self.ini_init(ini_dict)
        self.conf.read(self.ini_f)
        for idx in ini_dict:
            for idxx in ini_dict[idx]:
                if "_bool" in idxx:
                    ini_dict[idx][idxx]=self.conf.getboolean(idx,idxx)
                elif "_int" in idxx:
                    ini_dict[idx][idxx]=self.conf.getint(idx,idxx)
                elif "_float" in idxx:
                    ini_dict[idx][idxx]=self.conf.getfloat(idx,idxx)
                else:
                    ini_dict[idx][idxx]=self.conf.get(idx,idxx)
        return True
    def ini_write(self,ini_dict:dict={}):
        self.conf.read(self.ini_f)
        self.ini_init(ini_dict)
        for idx in ini_dict:
            for idxx in ini_dict[idx]:
                self.conf.set(idx,idxx,str(ini_dict[idx][idxx]))
        print("done")
        self.conf.write(open(self.ini_f,'w'))
        return True

if __name__=="__main__":
    test = {"Test1":{"cnblogs":"https://www.cnblogs.com/hardfood/","bilibili":"https://space.bilibili.com/68973181","uio_str":"opop"},
            "Test2":{"Test_int":233}}
    ini_f ="./config.ini"
    xe = Ini(ini_f)
    xe.ini_write(test)
    # xe.ini_read(test)
    print(test)

运行后ini文件内容

[Test1]
cnblogs = https://www.cnblogs.com/hardfood/
bilibili = https://space.bilibili.com/68973181
uio_str = opop

[Test2]
test_int = 233

读文件操作

inifile

[Test1]
cnblogs = https://www.cnblogs.com/hardfood/
bilibili = https://space.bilibili.com/68973181
uio_str = opop

[Test2]
test_int = 233

code

import configparser
import os

class Ini:
    def __init__(self,file_path:str="./config.ini") -> None:
        '''
        设定log文件路径
        '''
        self.ini_f = file_path
        self.conf = configparser.ConfigParser()

    def ini_init(self,ini_dict:dict={}):
        if os.path.exists(self.ini_f):
            print("exist")
        else:
            with open(self.ini_f,"w") as p:
                print("create ok")
            self.conf.read(self.ini_f)
            for idx in ini_dict:
                if not self.conf.has_section(idx):
                    self.conf.add_section(idx)
                    for idxx in ini_dict[idx]:
                        self.conf.set(idx,idxx,str(ini_dict[idx][idxx]))
            self.conf.write(open(self.ini_f,'w'))
    def ini_read(self,ini_dict:dict={}):
        self.ini_init(ini_dict)
        self.conf.read(self.ini_f)
        for idx in ini_dict:
            for idxx in ini_dict[idx]:
                if "_bool" in idxx:
                    ini_dict[idx][idxx]=self.conf.getboolean(idx,idxx)
                elif "_int" in idxx:
                    ini_dict[idx][idxx]=self.conf.getint(idx,idxx)
                elif "_float" in idxx:
                    ini_dict[idx][idxx]=self.conf.getfloat(idx,idxx)
                else:
                    ini_dict[idx][idxx]=self.conf.get(idx,idxx)
        return True
    def ini_write(self,ini_dict:dict={}):
        self.conf.read(self.ini_f)
        self.ini_init(ini_dict)
        for idx in ini_dict:
            for idxx in ini_dict[idx]:
                self.conf.set(idx,idxx,str(ini_dict[idx][idxx]))
        print("done")
        self.conf.write(open(self.ini_f,'w'))
        return True

if __name__=="__main__":
    test = {"Test1":{"cnblogs":1,"bilibili":1,"uio_str":1},
            "Test2":{"Test_int":233}}
    ini_f ="./config.ini"
    xe = Ini(ini_f)
    # xe.ini_write(test)
    xe.ini_read(test)
    print(test)