Fra*_*ger 6 python streaming command-line yaml
我有一个命令行应用程序连续输出以下形式的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
Run Code Online (Sandbox Code Playgroud)
有人能做得更好吗?
| 归档时间: |
|
| 查看次数: |
2151 次 |
| 最近记录: |