如何避免使用过时的YAMLLoadWarning调用yaml.load()?

2026-05-21 20:591阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计298个文字,预计阅读时间需要2分钟。

如何避免使用过时的YAMLLoadWarning调用yaml.load()?

使用PyYAML解析yaml文件时,出现错误:`+fs=open(rE:\virtual_workshop\APP_AutoTest\caps\caps.yml) caps_data=yaml.load(fs) print(caps_data)`

错误分析及修改建议:

1.错误原因可能是路径格式不正确或者文件不存在。

2.使用`r`前缀在Python 3中是多余的,可以直接使用`E:\virtual_workshop\APP_AutoTest\caps\caps.yml`。

如何避免使用过时的YAMLLoadWarning调用yaml.load()?

修改后的代码:

pythonimport yaml

fs=open(E:/virtual_workshop/APP_AutoTest/caps/caps.yml)caps_data=yaml.load(fs)print(caps_data)

使用PyYAML解析yaml文件时,报错:

fs = open(r"E:\virtual_workshop\APP_AutoTest\caps\caps.yml")
caps_data = yaml.load(fs)
print(caps_data)


#运行结果
D:\program\Python37\python.exe E:/virtual_workshop/APP_AutoTest/common/base_driver.py
[{'platformName': 'Android', 'platformVersion': '5.1.1', 'deviceName': 'Android Emulato', 'appPackage': 'com.xxzb.fenwoo', 'appActivity': 'com.xxzb.fenwoo.activity.addition.WelcomeActivity'}, {'server_ip': '127.0.0.1', 'server_port': 4723}]
E:/virtual_workshop/APP_AutoTest/common/base_driver.py:8: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read msg.pyyaml.org/load for full details.
caps_data = yaml.load(fs)

Process finished with exit code 0

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

解决办法:

caps_data = yaml.load(fs, Loader=yaml.FullLoader)


本文共计298个文字,预计阅读时间需要2分钟。

如何避免使用过时的YAMLLoadWarning调用yaml.load()?

使用PyYAML解析yaml文件时,出现错误:`+fs=open(rE:\virtual_workshop\APP_AutoTest\caps\caps.yml) caps_data=yaml.load(fs) print(caps_data)`

错误分析及修改建议:

1.错误原因可能是路径格式不正确或者文件不存在。

2.使用`r`前缀在Python 3中是多余的,可以直接使用`E:\virtual_workshop\APP_AutoTest\caps\caps.yml`。

如何避免使用过时的YAMLLoadWarning调用yaml.load()?

修改后的代码:

pythonimport yaml

fs=open(E:/virtual_workshop/APP_AutoTest/caps/caps.yml)caps_data=yaml.load(fs)print(caps_data)

使用PyYAML解析yaml文件时,报错:

fs = open(r"E:\virtual_workshop\APP_AutoTest\caps\caps.yml")
caps_data = yaml.load(fs)
print(caps_data)


#运行结果
D:\program\Python37\python.exe E:/virtual_workshop/APP_AutoTest/common/base_driver.py
[{'platformName': 'Android', 'platformVersion': '5.1.1', 'deviceName': 'Android Emulato', 'appPackage': 'com.xxzb.fenwoo', 'appActivity': 'com.xxzb.fenwoo.activity.addition.WelcomeActivity'}, {'server_ip': '127.0.0.1', 'server_port': 4723}]
E:/virtual_workshop/APP_AutoTest/common/base_driver.py:8: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read msg.pyyaml.org/load for full details.
caps_data = yaml.load(fs)

Process finished with exit code 0

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

解决办法:

caps_data = yaml.load(fs, Loader=yaml.FullLoader)