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的几条建议分享
Feb 10 Python
python实现通过shelve修改对象实例
Sep 26 Python
解决Python中由于logging模块误用导致的内存泄露
Apr 23 Python
Python基于checksum计算文件是否相同的方法
Jul 09 Python
Python实现简单多线程任务队列
Feb 27 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
Python接口自动化判断元素原理解析
Feb 24 Python
python中实现词云图的示例
Dec 19 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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中文件上传的一个问题
2010/09/04 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python实现Windows电脑定时关机
2018/06/20 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
python环境下安装opencv库的方法
2020/03/05 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
中学教师请假制度
2014/02/03 职场文书
纪律教育月活动总结
2014/08/26 职场文书
企业愿景口号
2015/12/25 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
《检阅》教学反思
2016/02/22 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Html5调用企业微信的实现
2021/04/16 HTML / CSS
Python中的tkinter库简单案例详解
2022/01/22 Python