[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)
----改进版
参考Python模块之: configobj - 云+社区 - 腾讯云 (tencent.com)
from configobj import ConfigObj class Ini: @staticmethod def Write(section:str,word:str,writeValue,pathDefault:str="./config.ini"): iniobj = ConfigObj(pathDefault,encoding="UTF8") if section in iniobj.sections: pass else: iniobj[section]={} iniobj[section][word]=writeValue iniobj.write() @staticmethod def Read(section:str,word:str,DefaultValue="",pathDefault="./config.ini"): iniobj = ConfigObj(pathDefault,encoding="UTF8") if section in iniobj.sections: if word in iniobj[section]: if "_bool" in word: return bool(iniobj[section][word]) if "_int" in word: return int(iniobj[section][word]) if "_float" in word: return float(iniobj[section][word]) return iniobj[section][word] else: iniobj[section][word]=DefaultValue iniobj.write() return DefaultValue else: iniobj[section]={} iniobj[section][word]=DefaultValue iniobj.write() return DefaultValue if __name__=="__main__": path = ["cnblogs","com","hardfood"] Ini.Write(path[0],path[1],path[2]) print("{}.{}/{}".format(path[0],path[1],Ini.Read(path[0],path[1])))
---用Rust写的Python轮子EasyIni(更方便的操作INI配置文件)
前言:一个用RUST语言编写的Python轮子,便捷的操作Ini配置文件,目前已在3.8.10使用OK;
使用方法:
pip install EasyIni
附Python使用代码该包仅sset和gget使用方法;
import EasyIni import os bb=EasyIni.sset("xx","33","33","{}/config.ini".format(os.getcwd())) cc=EasyIni.gget("xx","33","12","{}/config.ini".format(os.getcwd())) cc=EasyIni.gget("xx","33x","22","{}/config.ini".format(os.getcwd())) cc=EasyIni.gget("xx","33x","21","{}/config.ini".format(os.getcwd())) print(bb) print(cc)
其中sset为根据键值对进行设置值,参数4为配置文件路径 如D:/config.ini,若没有该值则生成键值对并设置此值,若没有该文件则创建文件;即用即走;
gget则是读取值,若没有值则创建并返回默认值,也就是参数3;
数值的读写均为字符串;
-------------====================分割线====================-------------
作者:戳人痛处
本博客link:https://www.cnblogs.com/hardfood/p/15594670.html
硬币,懂?
https://space.bilibili.com/68973181
标签:
python文本读取
, ini
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!