首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >yaml.load和yaml.safe_load之间的差异

yaml.load和yaml.safe_load之间的差异
EN

Stack Overflow用户
提问于 2020-09-16 00:44:27
回答 1查看 19.2K关注 0票数 17

我看到PyYaml在从yaml文件加载时截断零文件,如果使用:yaml.safe_load(stream)

如果使用yaml.load(stream, Loader=yaml.BaseLoader),它可以修复,但这是明智的吗?

它适用于yaml.load,零不被截断。

我想知道改用yaml.load而不是yaml.safe_load安全吗?

示例:

测试yaml内容:

代码语言:javascript
运行
复制
$cat test.yml
number: 5.10

代码:

代码语言:javascript
运行
复制
$python -c 'import yaml, sys; content = yaml.safe_load(sys.stdin); 
print(content) ' < test.yml
{'number': 5.1}

<<在结尾处截断0。但这是由于浮点值>>

而我想要的是确切的数字。

代码语言:javascript
运行
复制
$python -c 'import yaml, sys; content = yaml.load(sys.stdin, 
Loader=yaml.BaseLoader); print(content) ' < test.yml
{u'number': u'5.10'}

这是将其更改为yaml.load的正确方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-16 08:41:40

yaml.safe_load(sys.stdin)只是做yaml.load(sys.stdin, Loader=yaml.SafeLoader)

用于执行任意Python代码(使加载不安全)的工具是在默认情况下使用的yaml.Loader中实现的。yaml.BaseLoader不包含它们。因此,如果使用yaml.BaseLoader,加载将不会执行任意Python代码(也就是说,除非您自己向yaml.BaseLoader注册自定义构造函数)。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63911610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档