使用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 https://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)