问题描述:
python脚本读取yaml文件时提示警告信息
YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
datas = yaml.load(f)
原因分析:
yaml 5.1版本后弃用了yaml.load(file)这个用法,因为觉得不安全,5.1之后的版本修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数
详情(原因及解决办法)参见GitHub:https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation
解决方法:
方法一:
在PYTHONWARNINGS环境变量中添加指令
PYTHONWARNINGS=ignore::yaml.YAMLLoadWarning
方法二:
直接在读取yaml文件代码的后面加上 yaml.load(input, Loader=yaml.FullLoader),代码如下
# datas = yaml.load(f)
# 改为
datas = yaml.load(f, Loader=yaml.FullLoader)
方法三:
设置全局变量,忽略/禁用这个警告
yaml.warnings({'YAMLLoadWarning': False})