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 Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
Python进程间通信用法实例
Jun 04 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
Django保护敏感信息的方法示例
May 09 Python
Python中的Cookie模块如何使用
Jun 04 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
通过实例了解python__slots__使用方法
Sep 14 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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
基于mysql的论坛(4)
2006/10/09 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php实现源代码加密的方法
2015/07/11 PHP
初识ThinkPHP控制器
2016/04/07 PHP
php实现图片压缩处理
2020/09/09 PHP
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
js加强的经典分页实例
2013/03/15 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
jquery 手势密码插件
2017/03/17 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
python中lambda()的用法
2017/11/16 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
Tensorflow累加的实现案例
2020/02/05 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python 模拟登录B站的示例代码
2020/12/15 Python
学校七一活动方案
2014/01/19 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
餐饮投资计划书
2014/04/25 职场文书
军训口号
2014/06/13 职场文书
2014年车间工作总结
2014/11/21 职场文书
2015年少先队活动总结
2015/03/25 职场文书
家长反馈意见及建议
2015/06/03 职场文书
致运动员的广播稿
2015/08/19 职场文书
简历自我评价范文
2019/04/24 职场文书