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文件比较示例分享
Jan 10 Python
mac系统安装Python3初体验
Jan 02 Python
python实现简易通讯录修改版
Mar 13 Python
python如何修改装饰器中参数
Mar 20 Python
Python处理CSV与List的转换方法
Apr 19 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
python随机数分布random测试
Aug 27 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
python调用摄像头拍摄数据集
Jun 01 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
使用python绘制分组对比柱状图
Apr 21 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网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
利用指针变量实现队列的入队操作
2012/04/07 面试题
毕业生自我鉴定
2013/12/04 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
五一家具促销方案
2014/01/10 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
人大调研汇报材料
2014/08/14 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
python实现简单石头剪刀布游戏
2021/10/24 Python