Jon*_*Jon 726
PyYaml是一种不依赖C头的最简单,最纯粹的方法:
#!/usr/bin/env python
import yaml
with open("example.yaml", 'r') as stream:
try:
print(yaml.safe_load(stream))
except yaml.YAMLError as exc:
print(exc)
Run Code Online (Sandbox Code Playgroud)
就是这样.更多信息:
http://pyyaml.org/wiki/PyYAMLDocumentation
Mar*_*oma 92
# -*- 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)
Run Code Online (Sandbox Code Playgroud)
a list:
- 1
- 42
- 3.141
- 1337
- help
- €
a string: bla
another dict:
foo: bar
key: value
the answer: 42
Run Code Online (Sandbox Code Playgroud)
.yml 和 .yaml
对于您的应用程序,以下可能很重要:
另请参见:数据序列化格式的比较
如果您正在寻找一种制作配置文件的方法,您可能希望阅读我的简短文章Python中的配置文件
Ant*_*hon 56
如果您的YAML符合YAML 1.2规范(2009年发布),那么您应该使用ruamel.yaml(免责声明:我是该软件包的作者).它本质上是PyYAML的超集,支持大部分YAML 1.1(从2005年开始).
如果您希望在往返时能够保留您的注释,那么您当然应该使用ruamel.yaml.
升级@ Jon的例子很简单:
import ruamel.yaml as yaml
with open("example.yaml") as stream:
try:
print(yaml.safe_load(stream))
except yaml.YAMLError as exc:
print(exc)
Run Code Online (Sandbox Code Playgroud)
使用safe_load()除非你真的完全控制输入,需要它(很少这种情况)并知道你在做什么.
如果您使用pathlib Path来操作文件,则最好使用新的API ruamel.yaml提供:
from ruamel.yaml import YAML
from pathlib import Path
path = Path('example.yaml')
yaml = YAML(typ='safe')
data = yaml.load(path)
Run Code Online (Sandbox Code Playgroud)
小智 23
导入yaml模块并将文件加载到名为"my_dict"的字典中:
import yaml
my_dict = yaml.load(open('filename'))
Run Code Online (Sandbox Code Playgroud)
这就是你所需要的.现在整个yaml文件都在'my_dict'字典中.
Pra*_*ams 10
例:
defaults.yaml
url: https://www.google.com
Run Code Online (Sandbox Code Playgroud)
environment.py
from ruamel import yaml
data = yaml.safe_load(open('defaults.yaml'))
data['url']
Run Code Online (Sandbox Code Playgroud)
小智 5
要访问 YAML 文件中列表的任何元素,如下所示:
global:
registry:
url: dtr-:5000/
repoPath:
dbConnectionString: jdbc:oracle:thin:@x.x.x.x:1521:abcd
Run Code Online (Sandbox Code Playgroud)
您可以使用以下 python 脚本:
import yaml
with open("/some/path/to/yaml.file", 'r') as f:
valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
print(valuesYaml['global']['dbConnectionString'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
501993 次 |
| 最近记录: |