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自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
Python实现通讯录功能
Feb 22 Python
python3+PyQt5实现柱状图
Apr 24 Python
django模板结构优化的方法
Feb 28 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
Python queue队列原理与应用案例分析
Sep 27 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
最小化数据传输――在客户端存储数据
2006/10/09 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
php实现RSA加密类实例
2015/03/26 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
Python列表计数及插入实例
2014/12/17 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
教师自我鉴定范文
2013/11/10 职场文书
教师评优事迹材料
2014/01/10 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
努力学习演讲稿
2014/05/10 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript