python读取ini配置的类封装
时间:2022-07-23
本文章向大家介绍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: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
- Java阻塞队列线程集控制的实现方法
- 【自然框架】QuickPager分页控件,新增一种分页方式——伪URL分页(Postback版)
- 我们的漏洞Webug 3.0中级进阶攻略(上)
- 【自然框架】QuickPager分页控件的总体介绍和在线演示
- 在C++中反射调用.NET(三) 使用非泛型集合的委托方法C++中的列表对象list C++传递集合数据给.NET创建泛型List实例反射静态方法反射调用索引器当委托遇到协变和逆变C++/CLI
- 如何使用树莓派自制网络监视器
- 利用雅虎小型企业服务平台的目录遍历漏洞查看客户的信用卡信息
- 【自然框架】QuickPager asp.net 分页控件的Ajax分页方式。
- 骑行在华盛顿 针对320万次共享单车骑行数据的分析
- 【自然框架】QuickPagerSQL——专门生成分页用的SQL的类库
- 【数据科学】数据科学中的 Spark 入门
- 【自然框架】QuickPager分页控件的单独的源码 V2.0.4.2。
- 用 iPhoneX 的 FaceID 刷脸解锁真的靠谱吗?
- 【自然框架】用CMS的栏目举例,聊一聊从“一层”到“三层”的变化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Tbase开源版测评】基于PostgreSQL的国产开源数据库初体验
- 聊聊RedisToken
- 【Ceph RGW】Bucket Sharding的设置
- 每日手撕一道算法-1143.最长公共子序列
- 理解JavaScript 中的执行上下文和执行栈
- Spring Boot 2.x基础教程:使用集中式缓存Redis
- 彻底理解 Cookie、Session、Token、JWT这些登录授权方法
- 本体入门(二):OWL 本体构建指南f
- LeetCode 刷题记录(三)
- LeetCode 刷题记录(二)
- Qt音视频开发11-ffmpeg常用命令
- 《SICP》读书笔记之一:构造过程抽象(上)
- 习题解答
- 通过实际案例摸清楚Spring事务传播的行为
- 腾讯云TKE使用