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中的对象拷贝示例 python引用传递
Jan 23 Python
Python字符串切片操作知识详解
Mar 28 Python
django进阶之cookie和session的使用示例
Aug 17 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
Python bytes string相互转换过程解析
Mar 05 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
简单的Python人脸识别系统
Jul 14 Python
python中xlrd模块的使用详解
Feb 01 Python
Python Socket编程详解
Apr 25 Python
Python面向对象之内置函数相关知识总结
Jun 24 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 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设计模式 Factory(工厂模式)
2011/06/26 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue生命周期实例小结
2018/08/15 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
python批量修改文件名的实现代码
2014/09/01 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
python实现一个猜拳游戏
2020/04/05 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
英语演讲稿范文
2014/01/03 职场文书
网上书店创业计划书
2014/01/12 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
爱牙日活动总结
2014/08/29 职场文书
2019年思想汇报
2019/06/20 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript