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中使用ElementTree解析XML示例
Jun 02 Python
python魔法方法-自定义序列详解
Jul 21 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
实例讲解Python3中abs()函数
Feb 19 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 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
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python基于http下载视频或音频
2018/06/20 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
.NET程序员的几道面试题
2012/06/01 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
高中生期末评语大全
2014/01/28 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
奖金申请报告模板
2015/05/15 职场文书
男生贾里读书笔记
2015/06/30 职场文书
重阳节活动主持词
2015/07/04 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
2016年安全月活动总结
2016/04/06 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书