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 相关文章推荐
php使用递归与迭代实现快速排序示例
Jan 23 Python
Python中使用select模块实现非阻塞的IO
Feb 03 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Pycharm学习教程(2) 代码风格
May 02 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
Python实现FLV视频拼接功能
Jan 21 Python
keras slice layer 层实现方式
Jun 11 Python
Python字符串三种格式化输出
Sep 17 Python
python模板入门教程之flask Jinja
Apr 11 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模拟asp中response类实现方法
2015/08/08 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python单元测试简单示例
2018/07/03 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
物流管理毕业生自荐信范文
2014/03/15 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
元旦趣味活动方案
2014/08/22 职场文书
医德医魂心得体会
2014/09/11 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
五年级数学教学反思
2016/02/16 职场文书
高中班主任寄语
2019/06/21 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技