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开发编码规范
Sep 08 Python
Python基础之getpass模块详细介绍
Aug 10 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
python3实现随机数
Jun 25 Python
Python异常处理操作实例详解
Aug 28 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
一个简单的PHP&MYSQL留言板源码
2020/07/19 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
php 引用(&)详解
2009/11/20 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
document.getElementById介绍
2011/09/13 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
koa2 从入门到精通(小结)
2019/07/23 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
对于Python中RawString的理解介绍
2016/07/07 Python
python flask 多对多表查询功能
2017/06/25 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python如何定义有默认参数的函数
2020/08/10 Python
python操作toml文件的示例代码
2020/11/27 Python
学院书画协会部门职责
2013/11/28 职场文书
企业门卫岗位职责
2013/12/12 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
村容村貌整治方案
2014/05/21 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
2014年信用社工作总结
2014/11/25 职场文书
先进个人推荐材料
2014/12/29 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
springcloud整合seata
2022/05/20 Java/Android
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang