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读写ini文件的方法
May 28 Python
Python实现计算最小编辑距离
Mar 17 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
Python错误处理操作示例
Jul 18 Python
django Serializer序列化使用方法详解
Oct 16 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
在Python中实现shuffle给列表洗牌
Nov 08 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
Python 从subprocess运行的子进程中实时获取输出的例子
Aug 14 Python
python每天定时运行某程序代码
Aug 16 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
Python获取指定网段正在使用的IP
Dec 14 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
博士208HAF收音机实习报告
2021/03/02 无线电
PHP脚本数据库功能详解(上)
2006/10/09 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
js右键菜单效果代码
2007/07/21 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
koa-router源码学习小结
2018/09/07 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
工程专业求职自荐书范文
2014/02/18 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2014年行政部工作总结
2014/11/19 职场文书
七年级作文之游记
2019/12/11 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
SpringBoot集成Redis的思路详解
2021/10/16 Redis