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完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
利用aardio给python编写图形界面
Aug 21 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
django之自定义软删除Model的方法
Aug 14 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
用python中的matplotlib绘制方程图像代码
Nov 21 Python
django实现日志按日期分割
May 21 Python
python如何进行矩阵运算
Jun 05 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 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 if 想到的些问题
2008/03/22 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
vue脚手架搭建过程图解
2018/06/06 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
HTML的form表单和django的form表单
2019/07/25 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
在python image 中实现安装中文字体
2020/05/16 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
授权委托书范本
2014/04/03 职场文书
基层党支部整改方案
2014/10/25 职场文书
督导岗位职责
2015/02/04 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
小学英语教学反思范文
2016/02/15 职场文书
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server