iDe*_*Dev 7 python yaml pyyaml python-3.x
我看到 PyYaml 在从 yaml 文件加载时截断零,如果使用:
yaml.safe_load(stream).
如果使用yaml.load(stream, Loader=yaml.BaseLoader),它可以被修复,但这是可取的吗?
它适用yaml.load并且零不会被截断。
我想了解切换到yaml.load而不是安全yaml.safe_load吗?
例子:
测试yaml内容:
$cat test.yml
number: 5.10
Run Code Online (Sandbox Code Playgroud)
代码:
$python -c 'import yaml, sys; content = yaml.safe_load(sys.stdin);
print(content) ' < test.yml
{'number': 5.1}
Run Code Online (Sandbox Code Playgroud)
<< 它在末尾截断 0。但这是由于浮点值 >>
而我想要的是确切的数字。
$python -c 'import yaml, sys; content = yaml.load(sys.stdin,
Loader=yaml.BaseLoader); print(content) ' < test.yml
{u'number': u'5.10'}
Run Code Online (Sandbox Code Playgroud)
这是将其更改为 yaml.load 的正确方法吗?
yaml.safe_load(sys.stdin)就是这样yaml.load(sys.stdin, Loader=yaml.SafeLoader)。
执行任意 Python 代码(这使得加载不安全)的工具在yaml.Loader默认情况下使用。yaml.BaseLoader不包含它们。因此,如果您使用yaml.BaseLoader,加载将不会执行任意 Python 代码(也就是说,除非您自己使用 注册自定义构造函数yaml.BaseLoader)。
| 归档时间: |
|
| 查看次数: |
5197 次 |
| 最近记录: |