Python接口自动化系列- 读取 ini 配置文件05
一、ini文件的组成
一个ini文件是由多个section组成,每个section中以key=vlaue形式存储数据;

二、python读取ini文件数据
1、导包
import configparser config = configparser.ConfigParser() # 类实例化 # 定义文件路径 path='./ConfigParser.ini'
2.读取文件内容
# 第一种读取ini文件方式,通过read方法
config.read(path)
value=config['select']['url']
print('第一种方法读取到的值:',value)
# 第二种读取ini文件方式,通过get方法
value=config.get('select','url')
print('第二种方法读取到的值:',value)
# 第三种读取ini文件方式,读取到一个section中的所有数据,返回一个列表
value = config.items('select')
print('第三种方法读取到的值:',value)
返回结果:

3、通过上面两种方式,我们发现读取到的数据全部是str类型。如果我们想要得到指定数据类型的数据可以使用以下方法:
getint() getfloat() getboolean()
value = config.getint('connect_mysql','port')
print('这是第三种方法读取到的值:',value)
print('这是第三种方法读取到的值的数据类型:',type(value))

4.写入数据到ini文件中
# 将数据写入到ini文件中
config.add_section('login') # 首先添加一个新的section
config.set('login','username','admin') # 写入数据
config.set('login','password','123456') # 写入数据
config.write(open(path,'a')) #保存数据

5.获取到ini文件所有的section
# 读取ini文件中所有的section section = config.sections() print(section)

三、configparser封装类
为了更好的复用configparser,我们将常用的方法写成一个封装类
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = 操作配置文件工具类
"""
import configparser
class ConfigUtil:
# 实例化configparser
config = configparser.ConfigParser()
def read(self, filename):
"""
读取配置文件
:param filename: 配置文件路径
"""
self.config.read(filename, encoding="utf-8-sig")
def get(self, _section,_options):
"""
_section下获取某个options值
:param _options: option
:param _section: section
"""
try:
value = self.config[_section][_options]
except Exception as e:
print("没有获取到值")
value = None
return value
def get_options_key_value(self, _section):
"""
以列表(name,value)的形式返回section中的每个值
:param _section: 某个section
:return: list[tuple(key,value)]
"""
return self.config.items(_section)
def get_all_section(self):
"""
获取所有section
"""
return self.config.sections()
def get_options_by_section(self, _section):
"""
获取section下所有可用options
"""
# (推荐)
keys = self.config.options(_section)
return keys
def assert_section_in_config(self, _section):
"""
判断section是否存在
:param _section: 需要判断的section
"""
return _section in self.config
def assert_options_in_section(self, _section, _options):
"""
判断options是否存在某个section中
:param _section: 某个section
:param _options: 需要判断的options的key值
"""
return _options in self.config[_section]
def Get_data_type(self,_section,_options,types="getint"):
"""
得到指定数据类型的数据
:param _section:
:param _options:
:return:
"""
global value
if types=="getint":
value = self.config.getint(_section, _options)
print(type(value))
if types=="getfloat":
value = self.config.getint(_section, _options)
print(type(value))
if types=="getboolean":
value = self.config.getint(_section, _options)
print(type(value))
return value
def write_init(self,_section,key,value,path):
"""
写入ini文件
:return:
"""
if _section is not None:
self.config.add_section(_section) # 首先添加一个新的section
self.config.set(_section, key, value) # 写入数据
self.config.write(open(path, 'a'))
else:
return None
configUtil = ConfigUtil()
if __name__ == '__main__':
filename = './server.ini'
configUtil.read(filename)
print(configUtil.get("select","broswer"))
print(configUtil.get_options_key_value("select"))
print(configUtil.get_all_section())
print(configUtil.get_options_by_section("connect_mysql"))
print(configUtil.assert_section_in_config("login"))
print(configUtil.assert_options_in_section("login","username"))
print(configUtil.Get_data_type("connect_mysql","port"))
print(configUtil.write_init("TEST01","USER","cs01",filename))
返回结果:


本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/17028612.html

浙公网安备 33010602011771号