如何在 Python 中解析 YAML 文件?
原文由 Szymon Lipiński 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何在 Python 中解析 YAML 文件?
原文由 Szymon Lipiński 发布,翻译遵循 CC BY-SA 4.0 许可协议
# -*- coding: utf-8 -*-
import yaml
import io
# Define data
data = {
'a list': [
1,
42,
3.141,
1337,
'help',
u'€'
],
'a string': 'bla',
'another dict': {
'foo': 'bar',
'key': 'value',
'the answer': 42
}
}
# Write YAML file
with io.open('data.yaml', 'w', encoding='utf8') as outfile:
yaml.dump(data, outfile, default_flow_style=False, allow_unicode=True)
# Read YAML file
with open("data.yaml", 'r') as stream:
data_loaded = yaml.safe_load(stream)
print(data == data_loaded)
a list:
- 1
- 42
- 3.141
- 1337
- help
- €
a string: bla
another dict:
foo: bar
key: value
the answer: 42
.yml
和 .yaml
对于您的应用程序,以下内容可能很重要:
另请参阅: 数据序列化格式的比较
如果您更愿意寻找一种制作配置文件的方法,您可能需要阅读我的短文 Configuration files in Python
原文由 Martin Thoma 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答857 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
不依赖 C 头文件的最简单和最纯粹的方法是 PyYaml( 文档),可以通过
pip install pyyaml
安装:就是这样。普通的
yaml.load()
函数也存在,但yaml.safe_load()
应该始终是首选,以避免引入任意代码执行的可能性。因此,除非您明确需要任意对象序列化/反序列化,否则请使用safe_load
。请注意,PyYaml 项目支持 YAML 1.1 规范 的最高版本。如果需要 YAML 1.2 规范 支持,请参阅 此答案 中所述的 ruamel.yaml 。
此外,您还可以使用 pyyaml 的替代品,使您的 yaml 文件按照 您拥有它的方式 排序,称为 oyaml 。 在这里查看 oyaml 的 synk