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 修改文件指定行的方法
May 15 Python
Python 变量类型及命名规则介绍
Jun 08 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
python如何通过twisted实现数据库异步插入
Mar 20 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
python高阶爬虫实战分析
Jul 29 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
在windows下使用python进行串口通讯的方法
Jul 02 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
解决GD中文乱码问题
2007/02/14 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
brook javascript框架介绍
2011/10/10 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python使用OpenCV进行标定
2018/05/08 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python中time、datetime模块的使用
2020/12/14 Python
车间安全生产标语
2014/06/06 职场文书
党校学习心得体会范文
2014/09/09 职场文书
离婚被告答辩状
2015/05/22 职场文书
红色经典电影观后感
2015/06/18 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
高中政治教师教学反思
2016/02/23 职场文书
工作报告范文
2019/06/20 职场文书
深入理解python多线程编程
2021/04/18 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS