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实现的文本编辑器功能示例
Jun 30 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
pandas实现选取特定索引的行
Apr 20 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python 操作hive pyhs2方式
Dec 21 Python
python实现简单猜单词游戏
Dec 24 Python
Python用Jira库来操作Jira
Dec 28 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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
PHP 中执行系统外部命令
2006/10/09 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
python开发之str.format()用法实例分析
2016/02/22 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python配置文件处理的方法教程
2019/08/29 Python
美国渔具店:FishUSA
2019/08/07 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
教师旷工检讨书
2014/01/18 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
南京导游词
2015/02/03 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL