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简单日志处理类分享
Feb 14 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
Python3.6.x中内置函数总结及讲解
Feb 22 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
Python基础教程之输入输出和运算符
Jul 26 Python
pandas参数设置的实用小技巧
Aug 23 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 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网站提速三大“软”招
2006/10/09 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
基于Python中求和函数sum的用法详解
2018/06/28 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
详解Python中import机制
2020/09/11 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
小学教师师德感言
2014/02/10 职场文书
企业授权委托书范本
2014/04/02 职场文书
移风易俗倡议书
2014/04/15 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
民主生活会汇报材料
2014/12/15 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
2019各种承诺书范文
2019/06/24 职场文书