如何从一个大的yaml文件中获取部分数据?

2024-06-26 01:39:41 发布

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

我有一个大的yaml文件包含一些无用的数据。使用时山药负荷()要加载此文件,内存消耗超出了计算机的物理限制。我看不懂。我是否只能读取python dict所需的部分数据?有没有一些库或代码可以解决这个问题?在


Tags: 文件数据内存代码yaml计算机物理dict
2条回答

使用PyYaml,可以执行以下操作:

with open("file.yaml", 'r') as handle:
  for event in yaml.parse(handle):
    # handle the event here

这将逐个事件地处理YAML文件,而不是将其全部加载到数据结构中。当然,您现在需要从事件流中手动解析结构,但这允许您进一步处理部分数据。在

您可以查看PyYaml的Composer implementation,看看它是如何从事件中构造Python对象的,以及它期望从事件流中得到什么结构。在

这是另一种我发现在控制YAML输出格式时很有用的技术。您可以使用“-”分隔符将数据拆分为单独的YAML文档,而不是将数据作为一个单独的结构。例如,而不是

- foo: 1
  bar: 2
- foo: 2
  bar: 10

你可以这样写:

^{pr2}$

然后使用以下python代码进行解析:

with open("really_big_file.yaml") as f:
    for item in yaml.load_all(f):
        print(item)

相关问题 更多 >