假设我有一个 .yaml 文件,简化如下:
oracle:
user_name : name
password: password
yandex:
api_key: xxxxx
params:
param1: 1
param2: two
并且有描述的类:
from dataclasses import dataclass
@dataclass
class Oracle:
user_name: str
password: str
@dataclass
class Params:
param1: int
param2: str
@dataclass
class Yandex:
api_key: str
params : Params
@dataclass
class Config:
oracle: Oracle
yandex: Yandex
现在,要读取所有参数,以简化的方式使用以下代码:
def get_config(config_file='config.yaml'):
here = os.path.dirname(os.path.abspath(__file__))
full_file_path = os.path.join(here, config_file)
with open(full_file_path, 'r') as yaml_file:
config = yaml.load(yaml_file, Loader=yaml.BaseLoader)
params = Params(param1= config['yandex']['params']['param1'], ...)
yandex = ...
oracle = ...
return Config(oracle, yandex)
这种可以通过几行读取参数并立即将它们加载到类中的方式进行优化的感觉并没有离开。但我找不到类似的东西。
告诉我这里可以做什么?
您可以使用yamldataclassconfig (
pip install yamldataclassconfig) 库。它对类声明施加了更多限制,但是更改配置是一种乐趣。在链接上阅读更多信息。
代码而不是额外的单词: