如何在Python中处理YAML流

2024-10-01 15:49:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个命令行应用程序,它以以下形式连续输出YAML数据:

- col0: datum0
  col1: datum1
  col2: datum2
- col0: datum0
  col1: datum1
  col2: datum2
...

它永远这样做。我想编写一个Python脚本来连续读取这些记录。在

PyYAML库似乎最擅长获取完全加载的字符串并将其解释为完整的YAML文档。有没有办法让PyYAML进入“流式”模式?在

或者我唯一的选择就是自己把数据分块,一点一点地输入PyYAML?在


Tags: 数据字符串命令行脚本应用程序yaml记录形式
2条回答

文档中对流的所有引用似乎都是指文档流。。。我从未尝试过以您描述的方式使用它,但似乎将数据分块到这样的文档流中是一种合理的方法。在

这是我最后使用的方法,因为似乎没有一个内置的方法来实现我想要的。这个函数应该足够通用,可以在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

谁能做得更好?在

相关问题 更多 >

    热门问题