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和php通信乱码问题解决方法
Apr 15 Python
讲解Python中运算符使用时的优先级
May 14 Python
python和flask中返回JSON数据的方法
Mar 26 Python
python实现简单登陆流程的方法
Apr 22 Python
24式加速你的Python(小结)
Jun 13 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python处理session的方法整理
Aug 29 Python
TensorFlow tensor的拼接实例
Jan 19 Python
详解django中Template语言
Feb 22 Python
解决reload(sys)后print失效的问题
Apr 25 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 18 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
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
Json解析的方法小结
2016/06/22 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
Python3中详解fabfile的编写
2018/06/24 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python中对数据进行各种排序的方法
2019/07/02 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
职业规划书如何设计?
2014/01/09 职场文书
我未来的职业规划范文
2014/01/11 职场文书
村委会换届选举方案
2014/05/03 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
MySQL创建管理LIST分区
2022/04/13 MySQL