[英]Python3 - write back to same stream in yaml
目标:有一个包含多个流的 yaml 文件。 我想将键/值附加到单个流。 然后将添加内容(包括原始其他流)写回文件。
例子:
file.yaml 包含:
---
one_key: value
---
kind: Deployment
appendhere:
subkey: subvaluekey
---
third_key: value
现在,运行 python 脚本应该按照所需的输出运行:
---
one_key: value
---
kind: Deployment
appendhere:
subkey: subvaluekey
alright: value
---
third_key: value
我的代码:我可以将子键附加到流中。
#!/usr/bin/env python3
import yaml
stream = open('file.yaml', 'r')
for data in yaml.load_all(stream, Loader=yaml.FullLoader):
for k, v in data.items():
if "kind" in k:
if "Deployment" in v:
data['appendhere'].update({'addedkey': {'alright', 'value'}})
我不知道如何编写 Python 来写回 file.yaml ; 通过保留其他原始流,以及我附加了一个键的流。
您需要将读取的文档列表存储在某处,以便您可以再次转储它:
with open('file.yaml', 'r+') as stream:
documents = list(yaml.load_all(stream, Loader=yaml.FullLoader))
for data in documents:
# [snip] modification code
# move position in stream to front
stream.seek(0)
yaml.dump_all(documents, stream)
# discards surplus content when new data is smaller than old data
stream.truncate()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.