带有 yaml 文件的 Dicts 变成 OrderedDicts
Dicts become OrderedDicts with yaml files
我正在尝试将某些内容写入 .yaml 文件,但对 documentation 感到困惑。那里说了以下内容:
Block mapping can be nested:
# YAML
hero:
hp: 34
sp: 8
level: 4
orc:
hp: 12
sp: 0
level: 2
# Python
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
所以我试图通过最终如下所示的 yaml 文件获得类似的结果:
User1:
name: 'name1'
id: 001
strikes: 1
User2:
name: 'name2'
id: 002
strikes: 3
当我尝试使用文档示例中使用的内容时,结果如下:
User1: {id: '001', name: name1, strikes: 1}
User2: {id: '002', name: name2, strikes: 3}
为此,我使用了以下代码:
strikes = {'User1': {'name': 'name1', 'id': '001', 'strikes': 1}, 'User2': {'name': 'name2', 'id': '002', 'strikes': 3}}
with open(path + "/strikes.yml", 'w+') as stream:
yaml.dump(strikes, stream)
PyYAML 默认情况下,确实以流式写出复合叶节点,其余以块式写出。
如果您不希望那样,即希望一切都是块式的,请使用 safe_dump(data, default_flow_style=False)
:
import sys
import yaml
strikes = {'User1': {'name': 'name1', 'id': '001', 'strikes': 1}, 'User2': {'name': 'name2', 'id': '002', 'strikes': 3}}
yaml.safe_dump(strikes, sys.stdout, default_flow_style=False)
给出:
User1:
id: '001'
name: name1
strikes: 1
User2:
id: '002'
name: name2
strikes: 3
没有理由使用 yaml.dump()
而不是 yaml.safe_dump()
(我绝对希望你没有使用 yaml.load()
而不是 yaml.safe_load()
)
我正在尝试将某些内容写入 .yaml 文件,但对 documentation 感到困惑。那里说了以下内容:
Block mapping can be nested:
# YAML
hero:
hp: 34
sp: 8
level: 4
orc:
hp: 12
sp: 0
level: 2
# Python
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
所以我试图通过最终如下所示的 yaml 文件获得类似的结果:
User1:
name: 'name1'
id: 001
strikes: 1
User2:
name: 'name2'
id: 002
strikes: 3
当我尝试使用文档示例中使用的内容时,结果如下:
User1: {id: '001', name: name1, strikes: 1}
User2: {id: '002', name: name2, strikes: 3}
为此,我使用了以下代码:
strikes = {'User1': {'name': 'name1', 'id': '001', 'strikes': 1}, 'User2': {'name': 'name2', 'id': '002', 'strikes': 3}}
with open(path + "/strikes.yml", 'w+') as stream:
yaml.dump(strikes, stream)
PyYAML 默认情况下,确实以流式写出复合叶节点,其余以块式写出。
如果您不希望那样,即希望一切都是块式的,请使用 safe_dump(data, default_flow_style=False)
:
import sys
import yaml
strikes = {'User1': {'name': 'name1', 'id': '001', 'strikes': 1}, 'User2': {'name': 'name2', 'id': '002', 'strikes': 3}}
yaml.safe_dump(strikes, sys.stdout, default_flow_style=False)
给出:
User1:
id: '001'
name: name1
strikes: 1
User2:
id: '002'
name: name2
strikes: 3
没有理由使用 yaml.dump()
而不是 yaml.safe_dump()
(我绝对希望你没有使用 yaml.load()
而不是 yaml.safe_load()
)