0
点赞
收藏
分享

微信扫一扫

TypeError: load() missing 1 required positional argument: ‘Loader’ 解决方案

自信的姐姐 2022-04-04 阅读 169
python

一、报错分析

直接使用 yaml.load(stream) 报错如下:

File "D:\workplaces\python\GraphSAINT-master\graphsaint\utils.py", line 112, in parse_n_prepare
    train_config = yaml.load(f_train_config)
TypeError: load() missing 1 required positional argument: 'Loader'

显然,编译器提示 yaml 的 load()函数 缺少 1 个必要参数:'Loader',这是因为 Yaml  5.1 版本后弃用了 yaml.load(file) 这个用法。

新版本 Yaml 的 load() 函数如下:

def load(stream, Loader):
    """
    Parse the first YAML document in a stream
    and produce the corresponding Python object.
    """
    loader = Loader(stream)
    try:
        return loader.get_single_data()
    finally:
        loader.dispose()

Yaml 5.1 之后的版本为了加强安全性要求指定具体的 Loader,禁止执行任意函数。

二、解决方案

 新版本修改为以下任意一种即可,即指定了 'Loader'

d1 = yaml.load(file, Loader=yaml.FullLoader)
d1 = yaml.safe_load(file)
d1 = yaml.load(file, Loader=yaml.CLoader)
with open(config_file) as stream:
    config_dict = yaml.safe_load(stream)

举报

相关推荐

0 条评论