【发布时间】:2017-11-09 03:02:24
【问题描述】:
我想访问和修改如下所示的 YAML 文件的内容:
A: Sonstige
B:
C: Sonstige
D: null
E: 1
我知道为了访问和修改上述 YAML 文件中 A 的值,我会使用如下代码:
def set_state(state):
with open('my_file.yaml') as f:
doc = yaml.load(f)
doc['A'] = state
with open('my_file.yaml', 'w') as f:
yaml.dump(doc, f)
但是如果我想修改上述 YAML 文件中E 的值怎么办?如何访问E 的值并修改其值并将其转储到 YAML 文件中,类似于上面的代码。我查看了参考文档,但无法找到答案。
【问题讨论】:
-
嵌套字典用法?
doc['B']['C']?不确定 pyyaml 是如何工作的,但只要打印出doc['B']给你的东西,如果它是一个 dict,那么,很简单。 -
doc['B']['C'] .. 它有效!.. 它有效.. 非常感谢.. 想知道我怎么错过了这个!
-
永远不要使用 PyYAML
yaml.load(),没有必要也不安全。 -
@Anthon 请问您推荐的备用保险箱是什么?
-
它被称为:
safe_load所以改为yaml.safe_load()。还有一个safe_dump()不会尝试转储任何和所有 Python 对象而不会抱怨,但这已经足够了,您只需使用 dict/list 和原语(bool、string、int、float、datetime)跨度>