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 22 Python
python读取浮点数和读取文本文件示例
May 06 Python
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
python计算方程式根的方法
May 07 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
PyQt5每天必学之组合框
Apr 20 Python
详解Django之admin组件的使用和源码剖析
May 04 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
python实现的人脸识别打卡系统
May 08 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php常用Stream函数集介绍
2013/06/24 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
Vue实现验证码功能
2019/12/03 Javascript
原生js实现购物车功能
2020/09/23 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python读取Excel的方法实例分析
2015/07/11 Python
Python 正则表达式的高级用法
2016/12/04 Python
python实现二维插值的三维显示
2018/12/17 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
给民警的表扬信
2014/01/08 职场文书
师德模范事迹材料
2014/06/03 职场文书
房屋租赁协议书
2014/10/18 职场文书
后勤个人工作总结
2015/02/28 职场文书
人事聘任通知
2015/04/21 职场文书
团支部书记竞选稿
2015/11/21 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python