我有一个命令行应用程序,它以以下形式连续输出 YAML 数据:
- col0: datum0
col1: datum1
col2: datum2
- col0: datum0
col1: datum1
col2: datum2
...
它永远这样做。我想编写一个Python脚本来连续读取这些记录。
PyYAML 库似乎最擅长获取完全加载的字符串并将其解释为完整的 YAML 文档。有没有办法将 PyYAML 置于“流”模式?
或者是我自己将数据分块并将其一点一点输入 PyYAML 的唯一选择?
这是我最终使用的,因为似乎没有内置方法来完成我想要的事情。此函数应该足够通用,以便它可以读取 YAML 流并在遇到顶级对象时返回它们。
def streamInYAML(stream):
y = stream.readline()
cont = 1
while cont:
l = stream.readline()
if len(l) == 0:
cont = 0
else:
if l.startswith(' '):
y = y + l
else:
yield yaml.load(y)
y = l
有人能做得更好吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)