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