一、为什么要封装

  我们为什么要封装,我相信你们在项目开发过程中深有体会,那么这个读取配置工具类,又是为了什么?

  为了项目参数配置的灵活性,不要改动到源码

  为了信息的安全(一定层面的),体现代码重用性

  二、封装读取配置文件的操作类

  from configparser import ConfigParser

  # 2.配置文件由哪几部分构成?

  # a、sectionso区域

  # b、option选择项:value值

  class conf_read(object):

  '''封装读取confi/ini等配置文件的操作类'''

  def __init__(self,conf_name,encoding="utf-8):

  # 创建ConfigParser解析对象

  self.conf=ConfigParser()

  self.conf_name=conf_name

  self.encoding=encoding

  # 读取指定配置文件

  self.conf.read(self.conf_name,encoding=self.encoding)

  # 读取数据:查看区域

  self.sections=self.conf.sections()

  self.options=[]

  def get(self,section,option):

  return self.conf.get(section,option)

  def get_int(self,section,option):

  return self.conf.getint(section,option)

  def get_float(self,section,option):

  return self.conf.getfloat(section,option)

  def get_bool(self,section,option):

  return self.conf.getboolean(section,option)

  优化上面封装的读取配置操作类郑州妇科医院哪家好 http://mobile.chfk120.com/

  看上面封装的读取配置操作类,每个方法都只是return简单的一句话源码,其实都只是继承配置类中最原始的方法,所以不用再重复造轮子

  from configparser import ConfigParser

  class conf_read(ConfigParser):

  def __init__(self,conf_name,encoding="utf-8"):

  # 创建ConfigParser解析对象

  super().__init__()

  self.conf_name=conf_name

  self.encoding=encoding

  # 读取指定配置文件

  self.read(self.conf_name,encoding=self.encoding)

  def write_data(self.conf_name)

  '''往配置文件中写入数据'''

  self.set(section, option, value)

  self.write(open(self.file_name,"w",encoding=self.encoding))

  这样看代码,是不是比上一个版本简洁多了,至于读取配置文件的方法,使用继承ConfigParser类的原始方法就好了:

  conf=conf_read("common.conf",encoding="utf-8")

  conf.get("section","option")

最新文章

  1. Eclipse默认空间与工作空间的更改(转)
  2. adcfgclone.pl appsTier报错Unable to locate 'linkxlC' utility in path
  3. 把Java生成的RSA公钥、私钥转换成.NET使用的XML格式
  4. Homebrew安装
  5. uva 10940
  6. Java常用知识点
  7. 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中
  8. <frameset><frame><iframe>网页框架
  9. cf Magic Numbers
  10. 使用 Microsoft.ApplicationBlocks.Data SqlHelper 查询超时以及解决方案
  11. ext3文件系统反删除利器ext3grep应用实战
  12. mac上搭建python+selenium2的环境
  13. Nim 博弈和 sg 函数
  14. Vue的报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
  15. LDA数学八卦笔记(一)Gamma函数
  16. Redis数据结构详解,五种数据结构分分钟掌握
  17. Oracle ORA-12541:TNS:无监听程序
  18. 利用OCR识别扫描的jpg、tif文件的文字
  19. [午间休息] - 午间codewars活跃脑袋
  20. Queue接口的实现类竟然有一个是LinkedList,一个是优先队列(同一个接口,只改了不同的实现类,附源码)

热门文章

  1. 201871010128-杨丽霞《面向对象程序设计(java)》第十三周学习总结
  2. Maven 拥有三套相互独立的生命周期:clean、default、site
  3. shell脚本特殊符号——单引号、双引号、反引号、反斜杠
  4. day16_7.18 常用模块
  5. day6_7.4总结数据类型的可变不可变
  6. opencv局限:cv::FileStorage读取中,xml文件的第一层节点不能超过4个
  7. redis 在 windows 中的安装
  8. 批处理教程之cls、pause命令
  9. 微信小程序开发工具调试没问题,真机调试Provisional headers are shown
  10. 【ECNU3386】Hunter's Apprentice(多边形有向面积)