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编写简单的微博爬虫
Mar 04 Python
python读取excel表格生成erlang数据
Aug 26 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
Python实现聊天机器人的示例代码
Jul 09 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
wxPython多个窗口的基本结构
Nov 19 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
通过python检测字符串的字母
Feb 18 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 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
深入file_get_contents与curl函数的详解
2013/06/25 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
培养自己的php编码规范
2015/09/28 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
拖动时防止选中
2017/02/03 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
通过数据库向Django模型添加字段的示例
2015/07/21 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
Python用input输入列表的实例代码
2020/02/07 Python
利用python汇总统计多张Excel
2020/09/22 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
经典公益广告词
2014/03/13 职场文书
伊索寓言教学反思
2014/05/01 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Python os和os.path模块详情
2022/04/02 Python
python读取mat文件生成h5文件的实现
2022/07/15 Python