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之Python文档
Oct 10 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
Python3处理HTTP请求的实例
May 10 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python 爬取学信网登录页面的例子
Aug 13 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
Python代码生成视频的缩略图的实例讲解
Dec 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python编程之属性和方法实例详解
2015/05/19 Python
八大排序算法的Python实现
2021/01/28 Python
Python 多线程实例详解
2017/03/25 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
利用Python破解斗地主残局详解
2017/06/30 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
python远程连接MySQL数据库
2019/04/19 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
opencv实现图像几何变换
2021/03/24 Python
生日主持词
2014/03/20 职场文书
博士生专家推荐信
2014/09/26 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
利用 JavaScript 构建命令行应用
2021/11/17 Javascript