如何利用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中join和split用法实例
Apr 14 Python
Python运算符重载用法实例分析
Jun 01 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python实现人脸识别代码
Nov 08 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
django基础学习之send_mail功能
Aug 07 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
python属于解释型语言么
Jun 15 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 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 类商品秒杀计时实现代码
2010/05/05 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
js对数字的格式化使用说明
2011/01/12 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
python实现ip代理池功能示例
2019/07/05 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Python txt文件如何转换成字典
2020/11/03 Python
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
安全教育心得体会
2013/12/29 职场文书
企业授权委托书范本
2014/04/02 职场文书
《春晓》教学反思
2014/04/20 职场文书
党员创先争优心得体会
2014/09/11 职场文书
出国留学单位推荐信
2015/03/26 职场文书
盲山观后感
2015/06/11 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
Golang数据类型和相互转换
2022/04/12 Golang