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 相关文章推荐
解决Ubuntu pip 安装 mysql-python包出错的问题
Jun 11 Python
python实现简单多人聊天室
Dec 11 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
django做form表单的数据验证过程详解
Jul 26 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
套娃式文件夹如何通过Python批量处理
Aug 23 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获取当前url的具体方法全面解析
2013/11/26 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
js中onload与onunload的使用示例
2013/08/25 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
Python中的自省(反射)详解
2015/06/02 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Python 查看文件的读写权限方法
2018/01/23 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python实现京东秒杀功能
2018/07/30 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
网络管理专业求职信
2014/03/15 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
2014年店长工作总结
2014/11/17 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
python前后端自定义分页器
2022/04/13 Python
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android