如果要将E的值更改为2,可以执行以下操作:import yaml
def set_state(state):
with open('my_file.yaml') as f:
doc = yaml.load(f)
doc['B']['E'] = state
with open('my_file.yaml', 'w') as f:
yaml.dump(doc, f)
set_state(2)
获取E上第一个索引的值。在
在我的经验中,这有多个问题:您正在使用load(),在PyYAML中,这是一个不安全的操作,没有警告。您的数据可以用safe_load()加载,即使不能加载,也要扩展safe_load()来处理标记(并且只处理那些标记),而不是扩展load()。
您的输出如下所示:
^{pr2}$
一点都不像您的输入,所以使用选项default_flow_style=False
以获得与原始块样式布局相同的内容。
您不需要dump(),因为由dict和原语(以及列表)组成的数据可以用^{来转储。这里没有安全问题,但是如果您意外地使用非原语调用set_state():class Dice:
def __init__(self, sides):
self.sides = sides
set_state(Dice(6))
然后dump()将静默地生成不可移植的:A: Sonstige
B:
C: Sonstige