執行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