0

我有以下代码段

import xml.etree.cElementTree as et

fstring = open(filename).read()
tree = et.fromstring(fstring)

for el in tree.findall('tag'):
    do stuff

但是,fstring 是巨大的(约 80mbs 的数据),当我尝试将字符串转换为树时遇到“内存不足”错误。有没有办法解决这个问题,也许是对树的某种懒惰评估?

谢谢!

编辑:

我尝试使用 iterparse,但它仍然在 iterparse 调用上给我 MemoryError。有没有办法将文件分成多个块并一个一个地处理它们?

4

1 回答 1

2

看看iterparse

例如,要解析大文件,您可以在处理完元素后立即删除它们:

for event, elem in iterparse(source):
    if elem.tag == "record":
        ... process record elements ...
        elem.clear()
于 2012-11-06T21:38:03.917 回答