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下使用状态机的教程
Apr 11 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
python程序封装为win32服务的方法
Mar 07 Python
Python 多线程不加锁分块读取文件的方法
Dec 11 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
python ---lambda匿名函数介绍
Mar 13 Python
python 两个数据库postgresql对比
Oct 21 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
Python常用数据分析模块原理解析
Jul 20 Python
python 通过exifread读取照片信息
Dec 24 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 Smarty初体验二 获取配置信息
2011/08/08 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
对Python信号处理模块signal详解
2019/01/09 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Django中提示消息messages的设置方式
2019/11/15 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
大学生毕业求职的自我评价
2013/09/29 职场文书
办公室主任岗位职责
2013/11/08 职场文书
个人委托书
2014/07/31 职场文书
员工保密协议书
2014/09/27 职场文书
简单的辞职信怎么写
2015/02/28 职场文书