Python configparser模块封装及构造配置文件


Posted in Python onAugust 07, 2020

1.configparser模块简介

使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser

configParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项

2.看一下configparser生成的配置文件的格式

ini配置文件格式如下:

这里是注释

[log]
log_path = base_dir/OutPut/log/

[image]
img_path = base_dir/OutPut/image/

[report]
report_path = base_dir/OutPut/report/

[test_case]
test_case_path = base_dir/TestData/case.xlsx

3.读取文件内容

import configparser
import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

if sys.platform == "win32":
  ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\')
else:
  ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini')

class Config(object):

  def __init__(self, path):
    self.path = path #配置文件名
    self.cf = configparser.ConfigParser() #创建一个配置文件对象
    self.cf.read(self.path, encoding='utf-8') # 调用配置文件对象的读取方法,并传入一个配置文件名

  def get(self, field, key): # 获取字符串类型的选项值
    result = ""
    try:
      result = self.cf.get(field, key)
    except:
      result = ""
    return result

  def set(self, field, key, value):
    try:
      self.cf.set(field, key, value)
      self.cf.write(open(self.path, 'w'))#创建一个配置文件并将获取到的配置信息使用配置文件对象的写入方法进行写入
    except:
      return False
    return True

def r_config(config_file_path, field, key):
  rf = configparser.ConfigParser()
  try:
    rf.read(config_file_path, encoding='utf-8')
    if sys.platform == "win32":
      result = rf.get(field, key).replace('base_dir', str(BASE_DIR)).replace('/', '\\')
    else:
      result = rf.get(field, key).replace('base_dir', str(BASE_DIR))
  except:
    sys.exit(1)
  return result
def w_config(config_file_path, field, key, value):
  wf = configparser.ConfigParser()
  try:
    wf.read(config_file_path)
    wf.set(field, key, value)
    wf.write(open(config_file_path, 'w'))
  except:
    sys.exit(1)
  return True
if __name__ == '__main__':
  print(r_config(ENV_CONF_DIR, 'log', 'log_path'))
  print(r_config(ENV_CONF_DIR, 'DB', 'database'))

Python configparser模块封装及构造配置文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的简单万年历例子分享
Apr 25 Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
python实现对csv文件的列的内容读取
Jul 04 Python
opencv python 傅里叶变换的使用
Jul 21 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
Python logging模块进行封装实现原理解析
Aug 07 #Python
Python定时任务APScheduler安装及使用解析
Aug 07 #Python
Python如何解除一个装饰器
Aug 07 #Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 #Python
Python实现上下文管理器的方法
Aug 07 #Python
Python 读取位于包中的数据文件
Aug 07 #Python
Python如何绘制日历图和热力图
Aug 07 #Python
You might like
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python Collatz序列实现过程解析
2019/10/12 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Python进行特征提取的示例代码
2020/10/15 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
质量工程师岗位职责
2013/11/16 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
2014年班干部工作总结
2014/11/25 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
JS数组去重详情
2021/11/07 Javascript
python中的random模块和相关函数详解
2022/04/22 Python