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获取网页上图片下载地址的方法
Mar 11 Python
python将ansible配置转为json格式实例代码
May 15 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
python3实现windows下同名进程监控
Jun 21 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
Jul 22 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
什么是python类属性
Jun 10 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面向对象学习笔记之一 基础概念
2012/10/06 PHP
yii上传文件或图片实例
2014/04/01 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python字符串中查找子串小技巧
2015/04/10 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
JPA面试常见问题
2016/11/14 面试题
文职个人求职信范文
2013/09/23 职场文书
初中科学教学反思
2014/01/21 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
2014年化工厂工作总结
2014/11/25 职场文书