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

  • Post author:
  • Post category:其他


最近在使用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)

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



版权声明:本文为weixin_40960688原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。