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结合shell查询google关键词排名的实现代码
Feb 27 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
基于python的Paxos算法实现
Jul 03 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
Python 如何解决稀疏矩阵运算
May 26 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
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
smarty内置函数section的用法
2015/01/22 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python验证码图片处理(二值化)
2019/11/01 Python
解决Python二维数组赋值问题
2019/11/28 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
什么是规则表达式
2012/05/03 面试题
即将毕业大学生自荐信
2014/01/24 职场文书
高中教师评语大全
2014/04/25 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
汽车转让协议书范本
2014/12/07 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫