# author:qinguanglei
# ddate:2023/11/14 16:14
# 该功能为读取yaml数据功能
import yaml
import os
from common.logger import logger


def read_yaml(yaml_path):
    '''读取yaml文件内容
        参数path: 相对路径，起始路径：项目的根目录
        realPath: 文件的真实路径,绝对路径地址 '''
    if not os.path.isfile(yaml_path):
        logger.error("文件路径不存在，请检查路径是否正确：%s" % yaml_path)
        raise FileNotFoundError("文件路径不存在，请检查路径是否正确：%s" % yaml_path)
    # open方法打开直接读出来
    f = open(yaml_path, 'r', encoding='utf-8')
    cfg = f.read()  # 读取出来是yaml文件格式
    d = yaml.load(cfg, Loader=yaml.FullLoader)  # 因此我们用load方法转字典
    return d


def get_filed_from_yaml(module, file, field):
    # 指定module，文件名file, 栏位field，获取对应的值
    # 此时目录结构不要随便更改，因为直接与路径挂钩
    # 直接拼接目录
    abs_path = os.path.abspath(__file__)
    # 往上一级到common
    common_dir = os.path.dirname(abs_path)
    # 往上一级到项目目录
    project_dir = os.path.dirname(common_dir)
    # 开始拼接目录
    yaml_path = project_dir + os.sep + "data" + os.sep + module + os.sep + file + ".yaml"
    logger.info(f'当前的yaml文件路径：{yaml_path}')
    # 获取读取的结果，为字典形式
    dictionary = read_yaml(yaml_path)
    logger.info(f'文件{file}中字段{field}值为{dictionary[field]}')
    # 专门返回指定的栏位
    return dictionary[field]
