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 greenlet实现原理和使用示例
Sep 24 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python延时操作实现方法示例
Aug 14 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python中的反斜杠问题深入讲解
Aug 12 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
Python中使用gflags实例及原理解析
Dec 13 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 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获取文件后缀的9种方法
2016/03/22 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python如何对实例属性进行类型检查
2018/03/20 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python dlib人脸识别代码实例
2019/04/04 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
实习自我鉴定范文
2013/10/30 职场文书
工程师岗位职责
2013/11/08 职场文书
执行力心得体会
2013/12/31 职场文书
高中生操行评语大全
2014/04/25 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
庆元旦演讲稿
2014/09/15 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技