0
点赞
收藏
分享

微信扫一扫

关于result = yaml.load(data, Loader=yaml.FullLoader)

Aliven888 2022-03-26 阅读 91
万叶集
🎉 隐约雷鸣 🎉 阴霾天空 🎉
🎉 但盼风雨来 🎉 能留你在此 🎉

文章目录

前言:今天在使用 yaml.load(data) 的时候出现如下报错。

脚本示例如下:

# coding:utf-8

import yaml


def read(path):
    with open(path, 'r') as file:
        data = file.read()
        result = yaml.load(data)
        return result


if __name__ == '__main__':
    result = read('test.yaml')
    print(result)

报错如下:

Traceback (most recent call last):
  File "/Users/username/PycharmProjects/XXXXX/XXXXX/file_read_write/test_yaml.py", line 14, in <module>
    result = read('test.yaml')
  File "/Users/username/PycharmProjects/XXXXX/XXXXX/file_read_write/test_yaml.py", line 9, in read
    result = yaml.load(data)
TypeError: load() missing 1 required positional argument: 'Loader'

首先看这个❌错误类型:TypeError: 缺少1个必需的位置参数:“Loader”

这是因为在 YAML 5.1版本后,已经弃用了 yaml.load(file) 这个用法,因为这样很不安全。在5.1版本之后就修改了,使用 yaml.load() 方法需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数,这样 load() 函数也变得更加安全。解决上述报错将 yaml.load() 改为 ``yaml.load(data, Loader=yaml.FullLoader) 即可。

解决该 TypeError 不单单 只有 yaml.load(data, Loader=yaml.FullLoader) 这一个方法。

以下三选一即可解决该 TypeError

yaml.safe_load(file.read())

yaml.load(file.read(), Loader=yaml.FullLoader)

yaml.load(file.read(), Loader=yaml.CLoader)
举报

相关推荐

0 条评论