如何读取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+'))
















