执行yaml.load()出现警告信息:YAMLLoadWarning: callingyaml.load() without Loader=..


执行yaml.load()出现警告信息:YAMLLoadWarning: callingyaml.load() without Loader=...

原因:

yaml5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数

解决方案:

通过下面两种方式处理:

1、yaml.load(a, Loader=yaml.FullLoader)
2、yaml.warnings({'YAMLLoadWarning': False})# 全局设置警告,不建议使用

 

通过查找官方网站得知:

Loader的几种加载方式:

BaseLoader--仅加载最基本的YAML。

SafeLoader--安全地加载YAML语言的子集。建议用于加载不受信任的输入。

FullLoader--加载完整的YAML语言。避免任意代码执行。这是当前(PyYAML 5.1)默认加载器调yaml.load(input)(发出警告后)。

UnsafeLoader--(也称为Loader向后兼容性)原始的Loader代码,可以通过不受信任的数据输入轻松利用。

想进一步了解相关信息,可参看官方介绍:

https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM