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中的__new__()方法的使用
Apr 09 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
python process模块的使用简介
May 14 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
JAVA/JSP学习系列之二
2006/10/09 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
如何在python中判断变量的类型
2020/07/29 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
Weblogic的布署方式
2013/08/23 面试题
财务管理专业推荐信
2013/11/19 职场文书
简历自我评价模版
2014/01/31 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
Elasticsearch 聚合查询和排序
2022/04/19 Python