如何利用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的web框架中的Model的教程
Apr 29 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
Python打印“菱形”星号代码方法
Feb 05 Python
详解python单元测试框架unittest
Jul 02 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python提取照片坐标信息的实例代码
Aug 14 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
python实现人像动漫化的示例代码
May 17 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
Python和Bash结合在一起的方法
Nov 13 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 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中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Python获取脚本所在目录的正确方法
2014/04/15 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
python实现经典排序算法的示例代码
2021/02/07 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
总结表彰大会主持词
2014/03/26 职场文书
微笑服务演讲稿
2014/05/13 职场文书
股指期货心得体会
2014/09/10 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js