如何利用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中设计模式之Decorator装饰器模式的要点
Mar 02 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
python去除字符串中的换行符
Oct 11 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python实现贪吃蛇小游戏
Mar 21 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
sklearn-SVC实现与类参数详解
Dec 10 Python
多个python文件调用logging模块报错误
Feb 12 Python
Python pandas 列转行操作详解(类似hive中explode方法)
May 18 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 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 面向对象实现代码
2009/11/11 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
python 调用c语言函数的方法
2017/09/29 Python
简单了解python模块概念
2018/01/11 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
python为什么会环境变量设置不成功
2020/06/23 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
购房协议书范本
2014/04/11 职场文书
《金子》教学反思
2014/04/13 职场文书
四查四看整改措施
2014/09/19 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
4种方法python批量修改替换列表中元素
2022/04/07 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers