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


Posted in Python onJanuary 08, 2020

这篇文章主要介绍了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 相关文章推荐
python基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
Python中字典映射类型的学习教程
Aug 20 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
python中星号变量的几种特殊用法
Sep 07 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
Django的信号机制详解
May 05 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
Python快速排序算法实例分析
Nov 29 Python
python3.4实现邮件发送功能
May 28 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 #Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 #Python
Pytorch DataLoader 变长数据处理方式
Jan 08 #Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 #Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 #Python
python爬虫爬取监控教务系统的思路详解
Jan 08 #Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 #Python
You might like
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python set常用操作函数集锦
2017/11/15 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
Python的互斥锁与信号量详解
2019/09/12 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
商务经理岗位职责
2014/08/03 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
施工现场安全管理制度
2015/08/05 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript