如何利用python 读取配置文件


Posted in Python onJanuary 06, 2021

引言

        在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变量值时通过代码读取或者写入数据到该配置文件即可,使用配置文件的好处就是不用在程序员写死,可以使程序更灵活。因而对于python语言就封装了configparser模块,用来处理指定格式的文件(文件名称一般为xxx.ini),配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(键=值)。

        注:目前python3版本操作配置文件模块名称变更为configparser,原有的python2版本配置文件模块名称变更为ConfigParser

configparser模块功能介绍

 configparser模块主要封装提供了ConfigParser()类、RawConfigParser()类、SafeConfigParser()类等,如下图导入configparser模块,可以查看并使用模块下已经封装好的所有类

如何利用python 读取配置文件

在configparser模块中主要还是使用封装的ConfigParser()类提供的方法来操作配置文件,对配置文件进行数据读取和写入等。

具体的该模块python官网对其有完整的介绍:https://docs.python.org/3/library/configparser.html

配置文件的格式如下:

  • 中括号“[ ]”内包含的为section。
  • section 下面为类似于key-value 的配置内容,一般是用赋值符“=”分隔。

      示例:

如何利用python 读取配置文件

 读取配置文件及其常用读取指定数据方法

 ConfigParser()类提供了操作读取配置文件、读取指定配置文件中section、section下的所有key-value等方法,具体方法使用如下:

如何利用python 读取配置文件

 代码示例:

import configparser
 
cf = configparser.ConfigParser() # 实例化
 
# read(filename) 读取文件
filename = cf.read(r'G:\api_test\configfile.ini',encoding='utf-8')
 
# sections() 得到所有的section,以列表形式返回
sec = cf.sections()
print(sec)
 
# 得到section下的所有option
opt = cf.options("mysql")
print(opt)
 
# items 得到section的所有键值对
value = cf.items("mysql")
print(value)
print(dict(value)) # 转成字典类型
 
# get(section,option) 得到section中的option值,返回string/int类型的结果
mysql_host = cf.get("mysql","host")
mysql_password = cf.getint("mysql","port")
print(mysql_host,mysql_password)

运行以上代码输出如下:

如何利用python 读取配置文件

写入配置文件(增删改操作)及其提供的操作方法

 ConfigParser()类提供了写入修改配置文件数据等方法,具体方法使用如下:

如何利用python 读取配置文件

 在配置文件编辑如下信息:

如何利用python 读取配置文件

 编辑如下代码:

import configparser
 
conf = configparser.ConfigParser()
conf.read(r'G:\api_test\configfile.ini',encoding='utf-8')
 
conf.set("code", "code", "6666")  # 修改指定section 的option
conf.set("code", "age", "123")  # 增加指定section 的option
conf.has_section("code")
conf.has_option("code","age")
#conf.remove_section("test")
#conf.remove_option("test","haha")
if 'test' not in conf.sections():
    conf.add_section("test")  # 增加section
    conf.set("test", "haha", "123")  # 给新增的section 写入option
file = open(r'G:\api_test\configfile.ini', 'w',encoding='utf-8')
conf.write(file)
file.close()

运行结束后如下:

如何利用python 读取配置文件

 编辑修改配置文件记得关闭配置文件。

通过以上使用ConfigParser()类提供读写配置文件的相关方法,就可以比较方便的操作配置文件。but,以上向配置文件读取和写入数据到配置文件的代码,并没有进行封装。由于经常需要使用配置文件进行数据读取和写入,因此建议将操作配置文件读写的操作封装成公共的模块。如操作读取配置文件的数据的封装,配置文件内容如下:

如何利用python 读取配置文件

新建read_config.py文件,封装的读取配置文件的代码,实例如下:

import configparser
import os
 
class ReadConfig():
    def __init__(self, filepath=None):
 
        root_dir = os.path.dirname(os.path.abspath('.'))        # 获取项目主路径
        # print("打印",root_dir)
        configpath = os.path.join(root_dir, "configfile.ini")  # 拼接路径
        # print("得到的路径为",configpath)
        self.cf = configparser.RawConfigParser()
        self.cf.read(configpath,encoding='utf-8')
    def get_cookie(self, param):
        value = self.cf.get("cookie", param)
        return value
    def get_sheet(self,param):
        value = self.cf.get("sheet",param)
        return value
    def get_mysql(self,param):
        value = self.cf.get("mysql",param)
        return value
    def get_code(self,param):
        value = self.cf.get("code",param)
        return value

 这样封装成类后,后续其他模块需要读取配置文件数据,就可以不用重复写读取配置文件的代码,直接引入该封装的类,并实例化对象调用类里面封装的方法即可。

以上就是如何利用python 读取配置文件的详细内容,更多关于python 读取配置文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python自动化测试之连接几组测试包实例
Sep 28 Python
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
Python实现批量转换文件编码的方法
Jul 28 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python2.7和NLTK安装详细教程
Sep 19 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
python计算二维矩形IOU实例
Jan 18 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
Pandas之缺失数据的实现
Jan 06 #Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 #Python
java字符串格式化输出实例讲解
Jan 06 #Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 #Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 #Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 #Python
Python读取ini配置文件传参的简单示例
Jan 05 #Python
You might like
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
Prototype Date对象 学习
2009/07/12 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
vue实现拖拽进度条
2021/03/01 Vue.js
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中List.index()方法的使用教程
2015/05/20 Python
学生信息管理系统python版
2018/10/17 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
党员岗位承诺口号大全
2014/03/28 职场文书
小学生期末评语
2014/04/21 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
投标售后服务承诺书
2015/04/29 职场文书