关于YAML 5.1版本后弃用yaml.load(file),导致的报错

最近在使用yaml第三方库解析yaml文件报错,在这里记录一下;

代码原文

    def get_yaml_data(yml_file):
        with open(yml_file, 'r', encoding='utf-8') as f:
            yml_content = yaml.load(f)
            return yml_content

以上的代码执行后,将会抛出异常,如下:

YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
# 原因:YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载​​器(FullLoader)禁止执行任意函数,该load函数也变得更加安全

解决方案

1、yml_content = yaml.load(f, Loader=yaml.FullLoader)
2、yml_content = yaml.load(stream, Loader=yaml.CLoader)
3、yml_content = yaml.safe_load(f)

将代码中的替换成以上三种方式任意一种即可