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 相关文章推荐
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 Python
Python数据类型详解(二)列表
May 08 Python
详解python3百度指数抓取实例
Dec 12 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
Python中利用xpath解析HTML的方法
May 14 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
利用python中集合的唯一性实现去重
Feb 11 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python datetime 如何处理时区信息
Sep 02 Python
python实现经纬度采样的示例代码
Dec 10 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无限分类使用concat如何实现
2015/11/05 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
JS跨域问题详解
2014/11/25 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
JavaScript中set与get方法用法示例
2018/08/15 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
Python中实现常量(Const)功能
2015/01/28 Python
Python的装饰器用法学习笔记
2016/06/24 Python
简单的python后台管理程序
2017/04/13 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
精彩自我鉴定
2014/01/16 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
房地产促销活动方案
2014/03/01 职场文书
音乐教育感言
2014/03/05 职场文书
部门年终奖分配方案
2014/05/07 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
Python实现的扫码工具居然这么好用!
2021/06/07 Python
Python Pygame实战之塔防游戏的实现
2022/03/17 Python