如何读取ini配置文件


前言

大家应该接触过.ini格式的配置文件。配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码。

  特别是后续做自动化的测试,代码和数据分享,进行管理。比如说发送邮件的邮箱配置信息、数据库连接等信息。

今天介绍一些如何用Python读取ini配置文件。

一、ini文件格式

  • 格式如下:
;这是注释
[section]
key1 = value1
key2= value2
[section] key3=value3 key4=value4
  • ​[section]​​:ini的section模块,是下面参数值的一个统称,方便好记就行
  • ​key = value​​:参数以及参数值
  • ini 文件中,使用英文分号“;”进行注释
  • section不能重复,里面数据通过section去查找,每个seletion下可以有多个key和vlaue的键值

Py3和Py2区别

# python3

import configParser

# python2

import ConfigParser

二、读取ini文件

Python自带有读取配置文件的模块ConfigParser,配置文件不区分大小写。

有一系列的方法可提供。

  • ​read(filename)​​:读取文件内容
  • ​sections()​​:得到所有的section,并以列表的形式返回。
  • ​options(section)​​:得到该section的所有option。
  • ​items(section)​​:得到该section的所有键值对。
  • ​get(section,option)​​:得到section中option的值,返回string类型。
  • ​getint(section,option)​​:得到section中option的值,返回int类型。

示例:

# 优化代码
class MyParser(configparser.ConfigParser):

def as_dict(self):
data = dict(self._sections)
print(self._sections)
# print(data)
for key in data:
# print(key)
data[key] = dict(data[key])
return data

x = MyParser()
x.read(ReadPath().ini_path(), encoding="utf8")
print(x.as_dict())

运行结果:

{'mysql': {'host': '127.0.0.1', 'port': '3306', 'user': 'root', 'password': '123456'}, 'template': {'param3': 'value3', 'param4': 'value4'}}

三、修改并写入ini文件

  • ​write(fp)​​:将config对象写入至某个ini格式的文件中。
  • ​add_section(section)​​:添加一个新的section。
  • ​set(section,option,value)​​:对section中的option进行设置,需要调用write将内容写入配置文件。
  • ​remove_section(section)​​:删除某个section。
  • ​remove_option(section,option)​​:删除某个section下的option

接上部分

from base.base_path import ReadPath
import configparser

------------------------------------修改section的值-----------------------------------------
conf_ini = configparser.ConfigParser()

# 打开
conf_ini.read(ReadPath().ini_path())
# 修改指定的section的参数值
conf_ini.set("mysql",'port','3308')
# 写入
conf_ini.write(open(ReadPath().ini_path(),'w+'))

------------------------------------新增section下在ke和value--------------------------------
# 增加指定section的option
# 打开
conf_ini.read(ReadPath().ini_path())

conf_ini.set("mysql","option_plus","value")
# 写入
conf_ini.write(open(ReadPath().ini_path(),'w+'))

------------------------------------新增新section-------------------------------------------
# 增加section
# 打开
conf_ini.read(ReadPath().ini_path())

# 新增
conf_ini.add_section("test_1")
conf_ini.set("test_1", "name", "test_1")

# 写入
conf_ini.write(open(ReadPath().ini_path(),'w+'))

如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣可以进到893694563,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术