Python3封装之INI配置调用

老惯例直接上代码,如有啥问题欢迎评论区里交流!

环境

Python 3.*及以上

代码

# -*- coding:utf-8 -*-
import os,configparser

class Config:
	
	# 根目录下的config.ini文件路径
    _path = os.path.join(os.getcwd(),'config.ini')
    _config = None

    _groupName = None

    def __init__(self):
    	# 实例化
        self._config = configparser.ConfigParser()
        # 读取配置内容
        self._config.read(self._path,encoding="utf-8-sig")

    def group(self,groupName):
        ''' 指定配置分组名称

        :return: self
        '''
        self._groupName = groupName
        return self

    def getGroupAll(self,groupName=None) -> dict:
        ''' 获取指定配置分组下所有配置

        :param groupName: 配置分组名称
        :return: dict
        '''
        if groupName is None:
            groupName = self._groupName

        listKey = self._config.options(groupName)
        list = {}
        for itemKey in listKey:
            list[itemKey] = self._config.get(groupName,itemKey)
        return list

    def getAll(self) -> dict:
        ''' 获取所有配置

        :return: dict
        '''
        _sections = self._config.sections()
        _data = {}
        for groupName in _sections:
            groupSect = self._config.options(groupName)
            if groupName not in _data:
                _data[groupName] = {}

            for key in groupSect:
                _data[groupName][key] = self._config.get(groupName,key)

        return _data


    def get(self,key:str=None):
        ''' 获取配置key值

        :param key: 配置名称
        :return: any
        '''
        if key is None:
            return self.getGroupAll()

        return self._config.get(self._groupName,key)

示例

INI文件内容:

[SOCKET]
HOST=0.0.0.0
PORT=9090
  • 实例化Config
self._configIns = Config()
  • 获取指定组配置下的KEY值
## 方式一
self._config = self._configIns.group('SOCKET')
self._config.get('host')
# 返回:0.0.0.0

## 方式二
self._config = self._configIns.group('SOCKET').get('host')
  • 获取指定配置分组下所有配置
self._config = self._configIns.getGroupAll('SOCKET')
# 返回:{'host': '0.0.0.0', 'port': '9090'}
  • 获取全部数据
# 获取全部数据
self._configIns.getAll()
# 返回:{'SOCKET':{'host': '0.0.0.0', 'port': '9090'}}

你可能感兴趣的:(Python3,python,ini)