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中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
python 数据的清理行为实例详解
Jul 12 Python
Python实现简易Web爬虫详解
Jan 03 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
python lambda的使用详解
Feb 26 Python
提取视频中的音频 Python只需要三行代码!
May 10 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
介绍几个array库的新函数 php
2006/12/29 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php 什么是PEAR?
2009/03/19 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
JavaScript 调试器简介
2009/02/21 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python 登录网站详解及实例
2017/04/11 Python
Python 操作MySQL详解及实例
2017/04/30 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
Python3实现二叉树的最大深度
2019/09/30 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
自荐信怎么写好
2013/11/11 职场文书
保密工作目标责任书
2014/07/28 职场文书
2015元旦标语横幅
2014/12/09 职场文书
小学母亲节活动总结
2015/02/10 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL