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脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
使用Python更换外网IP的方法
Jul 09 Python
BP神经网络原理及Python实现代码
Dec 18 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
python Tensor和Array对比分析
Jan 08 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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分页类的代码
2011/05/18 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
使用Python来开发微信功能
2018/06/13 Python
基于django传递数据到后端的例子
2019/08/16 Python
python导入库的具体方法
2020/06/18 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
公司培训欢迎词
2014/01/10 职场文书
吨的认识教学反思
2014/04/27 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js
Python基本的内置数据类型及使用方法
2022/04/13 Python