初步实现配置加载
This commit is contained in:
parent
9ca8ababf2
commit
f1a392aa32
48
app/config.py
Normal file
48
app/config.py
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
from typing import Union
|
||||||
|
from os import path as osp
|
||||||
|
import os
|
||||||
|
import importlib
|
||||||
|
import time
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
def __init__(self,conf:Union[dict,str]):
|
||||||
|
|
||||||
|
if type(conf) == dict:
|
||||||
|
# 杈撳叆鏄瓧鍏告椂
|
||||||
|
|
||||||
|
self._conf_Dict = conf
|
||||||
|
self.__name__ = '<Standard Dictionary>'
|
||||||
|
else:
|
||||||
|
ConfList = conf.split('://')
|
||||||
|
FileFormat = ConfList[0]
|
||||||
|
FilePath = ConfList[1]
|
||||||
|
|
||||||
|
if FileFormat not in ['json','yaml','py','env']:
|
||||||
|
# 鍒ゆ柇鏂囦欢鏍煎紡
|
||||||
|
raise NameError(f'Unsupported file format:{FileFormat}')
|
||||||
|
|
||||||
|
if not osp.exists(FilePath) and FileFormat not in ['env','py']:
|
||||||
|
# 鍒ゆ柇鏂囦欢鏄惁瀛樺湪
|
||||||
|
raise FileExistsError('The configuration file path does not exist.')
|
||||||
|
|
||||||
|
self.__name__ = osp.splitext(osp.basename(FilePath))[0]
|
||||||
|
|
||||||
|
self._conf_Dict = self._readConf(FilePath,FileFormat)
|
||||||
|
|
||||||
|
self.update()
|
||||||
|
|
||||||
|
def __getattr__(self, name):
|
||||||
|
if name in self._conf_Dict:
|
||||||
|
return self._conf_Dict[name]
|
||||||
|
else:
|
||||||
|
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
|
||||||
|
|
||||||
|
def update(self,conf:Union[dict, None] = None):
|
||||||
|
if conf:
|
||||||
|
self._conf_Dict = conf
|
||||||
|
# 鏇存柊鍒楄〃
|
||||||
|
for k,v in self._conf_Dict.items():
|
||||||
|
setattr(self,k,v)
|
||||||
|
self.__updateTime__ = time.time()
|
||||||
|
|
||||||
|
c = Config('env://MY:dotenv')
|
Loading…
Reference in New Issue
Block a user