python接口自动化之ConfigParser配置文件的使用详解
作者:miki_peng 发布时间:2023-09-07 02:56:04
前言:目前我们使用的绝大多数计算机程序,无论是办公软件,浏览器,甚至游戏、视频都是通过菜单界面系统配置的,它几乎成了我们使用机器的默认方式。而在python中,也有这样的一个配置模块可以把代码可配置化。
什么是配置文件
这里的配置文件不同于我们平常所见的可视化的菜单界面,它是像代码形式的,如下示例:
❓为什么要做配置文件?
✔️让代码和配置都变成可模块化可配置化,提高代码的重用性,那什么时候把它变成可配置化呢?多处地方都用到一个参数时,经常会变化的参数等,都可以可配置化,我们只需要在配置文件中进行修改即可,不需要在代码中一处处的重复修改。
Python提供了一个ConfigParser模块,它实现了一种基本的配置文件解析器语言,该语言提供的结构类似于文件中的结构。常见的配置文件格式有,配置文件由两个文件对象组成:section和option,一个配置文件里可以包含一个或多个节(section),每个节可以有多个option(键=值),如上图所标示。
读取配置文件
它与file文件一样,需要先打开才能进行读取操作,常用方法如下:
read(filename)
:直接读取配置文件内容sections()
:以列表的形式返回所有sectionoptions(section)
:得到对应section下的所有optionitems(section)
:得到对应section下的所有键值对get(section,option)
:得到对应的section中的option的值,并以string的类型返回getint(section,option)
:得到对应的section中的option的值,并以int的类型返回
以上图中的为例进行读取操作:
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"))
运行后查看文件里面的内容:
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"))# 测试
来源:https://www.cnblogs.com/miki-peng/p/13419730.html
猜你喜欢
- 如果用户查询时,使用Order BY排序语句指定按员工编号来排序,那么排序后产生的所有记录就是临时数据。对于这些临时数据,Oracle数据库
- 查看依赖包及对应的版本号信息的方法有两种:方法1:pip list 方法2:pip freeze这两个同时适用于Windows和Linux系
- 信号(signals)Flask信号(signals, or event hooking)允许特定的发送端通知订阅者发生了什么(既然知道发生
- 在我发表上一篇《Zen Coding: 一种快速编写HTML/CSS代码的方法》之后,有网友表示不知道怎么在Dreamweaver上使用ze
- 首先你要确定错误的原因: 让IE显示详细的出错信息: 菜单--工具--Internet选项--高级--显示友好的HTTP错误信息,去掉这个选
- 1 类继承Python 是面向对象的编程语言,因此支持面向对象的三大特性之一:继承。继承是代码重用的一种途径,Python 中的继承就像现实
- 在MySQL中有两种方法1、create table t_name select ...2、create table t_name like
- 有人问为什么要去扫描网站目录:懂的人自然懂这个Python脚本的特点:1.基本完善2.界面美观(只是画了个图案)3.可选参数增加了线程数4.
- js部分setInterval("time_controller()",1000);function time_cont
- FrontPage 2003在功能上增强了不少,下面我们一起来看看新版本中比较突出的9个新功能。1.自定义浏览器分辨率预览检查 在
- Heroku是一个很棒的平台,它有很多的控件,并且搭建环境相对来说也比较容易。本指南中,我将一步一步指导你在Heroku平台上部署一个简单地
- 简介:外部连接和自联接inner join(等值连接) 只返回两个表中联结字段相等的行left join(左联接) 返回包括左表中的所有记录
- 利用线程生成缩略图;读取当前路径下的png文件,在当前路径下生成6464,128128和32*32的缩略图。""&quo
- Python简介及入门python为什么是python选择自己喜欢的语言,这往往不容易,更多的是根据需求话说,之前是java,大学用了三年+
- 逆向最大匹配方法有正即有负,正向最大匹配算法大家可以参阅https://www.jb51.net/article/127404.htm逆向最
- print() 函数使用以 % 开头的转换说明符对各种类型的数据进行格式化输出。转换说明符(Conversion Specifier)只是一
- 1.什么是搜索引擎?搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集、信息整理和用户查询三部分”。如图1是搜索引
- 解决项目pycharm能运行,在终端却无法运行的问题报 ModuleNotFoundError: No module named '
- 深藏多年秘笈大公开,全世界唯一一家公布,怎么点就是点不出,纯CSS去掉按钮或者链接点击产生的虚线。运行代码框<style type=&
- CSS Sprites 简介:通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技术,目前它已经在网页开