首页 > 编程语言 >Python接口自动化系列- 读取 ini 配置文件05

Python接口自动化系列- 读取 ini 配置文件05

时间:2023-01-05 23:22:48浏览次数:51  
标签:配置文件 05 Python section value self print config options

一、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))

返回结果:

 

 

 

  

 

  

  

  

 

标签:配置文件,05,Python,section,value,self,print,config,options
From: https://www.cnblogs.com/xfbk/p/17028612.html

相关文章