在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可。

这篇博客,介绍下python中利用configparser模块读写配置文件的方法,仅供参考。。。

一、读取文件

configparser模块支持读取.conf和.ini等类型的文件,那么首先在文件夹新建一个.ini文件,写入一些信息,如下图:

示例代码如下:

 1 # coding=utf-8
2 import configparser
3 import os
4
5 os.chdir("E:\\Automation\\UI\\testcase")
6 cf = configparser.ConfigParser()
7
8 # read(filename) 读文件内容
9 filename = cf.read("test.ini")
10 print(filename)
11
12 # sections() 得到所有的section,以列表形式返回
13 sec = cf.sections()
14 print(sec)
15
16 # options(section) 得到section下的所有option
17 opt = cf.options("mysql")
18 print(opt)
19
20 # items 得到section的所有键值对
21 value = cf.items("driver")
22 print(value)
23
24 # get(section,option) 得到section中的option值,返回string/int类型的结果
25 mysql_host = cf.get("mysql","host")
26 mysql_password = cf.getint("mysql","password")
27 print(mysql_host,mysql_password)

执行脚本,结果如下所示:

1 ['test.ini']
2 ['driver', 'mysql']
3 ['host', 'port', 'username', 'password']
4 [('path', 'E:\\Automation\\UI\\testcase\\browser\\chromedriver.exe'), ('url', 'https://www.baidu.com/')]
5 127.0.0.1 123456

脚本解析:

cf.read(filename):读取文件内容

cf.sections():得到所有的section,并且以列表形式返回

cf.options(section):得到section下所有的option

cf.items(option):得到该section所有的键值对

cf.get(section,option):得到section中option的值,返回string类型的结果

cf.getint(section,option):得到section中option的值,返回int类型的结果

二、写入文件

如果需要在配置文件写入内容,需要os函数帮忙,示例代码如下:

 1 # coding=utf-8
2 import configparser
3 import os
4
5 os.chdir("E:\\Automation\\UI\\testcase")
6 cf = configparser.ConfigParser()
7
8 # 往配置文件写入内容
9
10 # add section 添加section项
11 # set(section,option,value) 给section项中写入键值对
12 cf.add_section("mq")
13 cf.set("mq", "user", "laozhang")
14 cf.add_section("kafka")
15 cf.set("kafka", "user", "xiaozhang")
16
17 # write to file
18 with open("test1.ini","w+") as f:
19 cf.write(f)

执行脚本,结果如下所示:

脚本解析:

cf.write(filename):将configparser对象写入.ini类型的文件

add_section():添加一个新的section

add_set(section,option,value):对section中的option信息进行写入

三、修改文件

还可以利用os函数对文件进行修改,示例代码如下:

 1 # coding=utf-8
2 import configparser
3 import os
4
5 os.chdir("E:\\Automation\\UI\\testcase")
6 cf = configparser.ConfigParser()
7
8 # 修改配置文件的内容
9
10 # remove_section(section) 删除某个section的数值
11 # remove_option(section,option) 删除某个section下的option的数值
12 cf.read("test1.ini")
13 cf.remove_option("kafka","user")
14 cf.remove_section("mq")
15
16 # write to file
17 with open("test1.ini","w+") as f:
18 cf.write(f)

执行脚本,结果如下所示:

脚本解析:

cf.read(filename):读取文件(这里需要注意的是:一定要先读取文件,再进行修改)

cf.remove_section(section):删除文件中的某个section的数值

cf.remove_option(section,option):删除文件中某个section下的option的数值

configparser模块读写ini配置文件的更多相关文章

  1. $用ConfigParser模块读写conf配置文件

    ConfigParser是Python内置的一个读取配置文件的模块,用它来读取和修改配置文件非常方便,本文介绍一下它的基本用法. 数据准备 假设当前目录下有一个名为sys.conf的配置文件,其内容如 ...

  2. Python的ConfigParser模块读取ini配置文件 报错(持续更新总结)

    1.ConfigParser.MissingSection什么的错误巴拉巴拉一堆,其实根本上就是没有读到配置文件,然后我去检查了一遍路径,发现没有问题,我是将文件的路径作为一个字符串拼接好传到另一个专 ...

  3. python:实例化configparser模块读写配置文件

    之前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用. 实例化的好处有很多,既方便调用,又降低了脚本的维护成本,而且提高 ...

  4. python:利用configparser模块读写配置文件

    在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...

  5. Python自动化测试 -ConfigParser模块读写配置文件

    C#之所以容易让人感兴趣,是因为安装完Visual Studio, 就可以很简单的直接写程序了,不需要做如何配置. 对新手来说,这是非常好的“初体验”, 会激发初学者的自信和兴趣. 而有些语言的开发环 ...

  6. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  7. C# 读写 ini 配置文件

    虽说 XML 文件越发流行,但精简的 ini 配置文件还是经常会用到,在此留个脚印. 当然,文中只是调用系统API,不会报错,如有必要,也可以直接以流形式读取 ini文件并解析. /// <su ...

  8. [转]VB 读写ini 配置文件

    转自 百度知道 C# 读写 ini配置文件 点此链接 'API 声明Public Declare Function GetPrivateProfileString Lib "kernel32 ...

  9. 自己写的 读写 ini 配置文件类

    /// <summary> /// 不调用系统API 读写 ini 配置文件 /// </summary> public class RW_ini { #region ==== ...

随机推荐

  1. Java堆外内存之一:堆外内存场景介绍(对象池VS堆外内存)

    最近经常有人问我在Java中使用堆外(off heap)内存的好处与用途何在.我想其他面临几样选择的人应该也会对这个答案感兴趣吧. 堆外内存其实并无特别之处.线程栈,应用程序代码,NIO缓存用的都是堆 ...

  2. MongoDB day03

    修改操作符 $set 修改一个域,或者增加一个域 e.g. 修改功能,如果该域不存在则增加这个域 db.class0.update({age:20},{$set:{name:'小微'}}) $unus ...

  3. mac环境下IDEA无法下载plugin或者自动下载Library

    卧槽,原谅我这么晚还在写blog,明天早上还要上班. 问题,idea 新建springmvc无法自动下载lib,报这个: you have JVM property "https.proxy ...

  4. 【UVa】11212 Editing a Book(IDA*)

    题目 题目     分析 get一下IDA*的技巧,感觉总体来说不难,主要是剪枝比较难想. 这是lrj的代码,比较通俗易懂,关键就是选定一个区间再取出来,插入到一个位置,接下来转移到这个状态.     ...

  5. 【UVA】1596 Bug Hunt(模拟)

    题目 题目     分析 算是个模拟吧     代码 #include <bits/stdc++.h> using namespace std; map<int,int> a[ ...

  6. 【学习笔记】dp基础

    知识储备:dp入门. 好了,完成了dp入门,我们可以做一些稍微不是那么裸的题了. dp基础,主要是做题,只有练习才能彻底掌握. 洛谷P1417 烹调方案 分析:由于时间的先后会对结果有影响,所以c[i ...

  7. stm32库函数FSMC_NORSRAMInit()解析

    这是一段对nor存储器的时序进行编程的函数,函数形式为void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct),里面 ...

  8. leetcode836

    public class Solution { public bool IsRectangleOverlap(int[] rec1, int[] rec2) { ], rec2[]) < Mat ...

  9. [Python Study Notes]pynput实现对鼠标控制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  10. Hash表从了解到深入(浅谈)

    · Hasn表,将一个数据进行Value化,再进行一个映射关系到Key直接进行访问的一个数据结构,这样可以通过直接的计算进行数据的访问和插入.关于Hash表的基本概念这里就不一一叙述,可以通过百度了解 ...