python接口自动化之ConfigParser配置文件的使用详解


Posted in Python onAugust 03, 2020

前言:目前我们使用的绝大多数计算机程序,无论是办公软件,浏览器,甚至游戏、视频都是通过菜单界面系统配置的,它几乎成了我们使用机器的默认方式。而在python中,也有这样的一个配置模块可以把代码可配置化。

什么是配置文件

​这里的配置文件不同于我们平常所见的可视化的菜单界面,它是像代码形式的,如下示例:

python接口自动化之ConfigParser配置文件的使用详解

​❓为什么要做配置文件?

​✔️让代码和配置都变成可模块化可配置化,提高代码的重用性,那什么时候把它变成可配置化呢?多处地方都用到一个参数时,经常会变化的参数等,都可以可配置化,我们只需要在配置文件中进行修改即可,不需要在代码中一处处的重复修改。

​Python提供了一个ConfigParser模块,它实现了一种基本的配置文件解析器语言,该语言提供的结构类似于.ini文件中的结构。常见的配置文件格式有.ini.conf.cfg,配置文件由两个文件对象组成:section和option,一个配置文件里可以包含一个或多个节(section),每个节可以有多个option(键=值),如上图所标示。

读取配置文件

​它与file文件一样,需要先打开才能进行读取操作,常用方法如下:

  • read(filename):直接读取配置文件内容
  • sections():以列表的形式返回所有section
  • options(section):得到对应section下的所有option
  • items(section):得到对应section下的所有键值对
  • get(section,option):得到对应的section中的option的值,并以string的类型返回
  • getint(section,option):得到对应的section中的option的值,并以int的类型返回

​以上图中的conf.ini为例进行读取操作:

from configparser import ConfigParser

# 创建一个操作配置文件的对象(文件解析对象)
conf = ConfigParser()

# 读取配置文件
conf.read("conf.ini", encoding="utf8")
# 获取所有section
res2 = conf.sections()
print("这是res2:{}\n".format(res2))
# 获取对应section下的option
res3 = conf.options("logging")
print("这是res3:{}\n".format(res3))
# 获取对应section下的所有键值对
res4 = conf.items("logging")
print("这是res4:{}\n".format(res4))
# get方法:读取出来的内容,都是字符串
res5 = conf.get("logging", "level")
print("这是res5:{}".format(res5), type(res5))
# getint方法:读取出来的内容,都是int类型
res6 = conf.getint("mysql", "port")
print("\n这是res6:{}".format(res6), type(res6))

​运行结果:

C:\software\python\python.exe D:/learn/test.py
这是res2:['logging', 'mysql']

这是res3:['level', 'f_level', 's_level']

这是res4:[('level', 'DEBUG'), ('f_level', 'DEBUG'), ('s_level', 'ERROR')]

这是res5:DEBUG <class 'str'>

这是res6:3306 <class 'int'>

Process finished with exit code 0

​除了可以读取str、int类型以外,还支持float、boolean,这里就不再举例。

​? 小知识:

  • 键值对可用=也可用:进行分隔
  • section名称是区分大小写的,而option不区分
  • 键值对中,首尾若有空白符会被去掉
  • 配置文件中也可以写入注释,注释以#或者;为前缀

写入配置文件

​基本的写入方法如下:

add_section(section) :添加一个新的sectionset( section, option, value) :对section中的option进行设置,需要调用write将内容写入配置文件

from configparser import ConfigParser

# 创建一个操作配置文件的对象(文件解析对象)
conf = ConfigParser()
conf.add_section('test')
conf.set('test', 'name', 'Amy')
conf.write(open('conf.ini', "a", encoding="utf-8"))

​运行后查看conf.ini文件里面的内容:

python接口自动化之ConfigParser配置文件的使用详解

ConfigParser的封装

​一次封装,一劳永逸,之后直接调用即可,封装内容按需。

from configparser import ConfigParser


class MyConf:

  def __init__(self, filename, encoding="utf8"):
    self.filename = filename
    self.encoding = encoding
    self.conf = ConfigParser()
    self.conf.read(filename, encoding)

  def get_str(self, section, option):
    return self.conf.get(section, option)

  def get_int(self, section, option):
    return self.conf.getint(section, option)

  def get_float(self, section, option):
    return self.conf.getfloat(section, option)

  def get_bool(self, section, option):

  def write_data(self, section, option, value):
    self.conf.set(section, option, value)
    self.conf.write(open(self.filename, "a", encoding=self.encoding))
    

if __name__ == '__main__':
  print(conf.get_str("conf.ini", "test","name"))	# 测试

总结

到此这篇关于python接口自动化 ConfigParser配置文件的使用的文章就介绍到这了,更多相关python接口自动化ConfigParser配置文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 类的继承实例详解
Mar 25 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python 字典访问的三种方法小结
Dec 05 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
Django 构建模板form表单的两种方法
Jun 14 Python
python else语句在循环中的运用详解
Jul 06 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
Pyhton模块和包相关知识总结
May 12 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 #Python
Python3基于plotly模块保存图片表格
Aug 03 #Python
详解Python的爬虫框架 Scrapy
Aug 03 #Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 #Python
Python pexpect模块及shell脚本except原理解析
Aug 03 #Python
python爬虫使用正则爬取网站的实现
Aug 03 #Python
python获取整个网页源码的方法
Aug 03 #Python
You might like
php适配器模式介绍
2012/08/14 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
javascript void(0)的妙用
2009/10/21 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
node.js实现端口转发
2016/04/14 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
javascript self对象使用详解
2016/10/18 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
利用node.js如何创建子进程详解
2017/12/09 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
js module大战
2019/04/19 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
python写的一个文本编辑器
2014/01/23 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
Django的models模型的具体使用
2019/07/15 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
如何在pycharm中安装第三方包
2020/10/27 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
表彰大会主持词
2014/03/26 职场文书
银行进社区活动总结
2014/07/07 职场文书
展览会邀请函
2015/02/02 职场文书