python cElementTree使用太多内存

时间:2012-11-06 21:33:15

标签: python xml elementtree

我有以下代码段

import xml.etree.cElementTree as et

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

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

然而,fstring是巨大的(大约80mbs的数据),当我尝试将字符串转换为树时,我正在引发“Out of memory”错误。有没有办法解决这个问题,或许是对树的一些懒惰评估?

谢谢!

编辑:

我尝试使用iterparse,它仍然在iterparse调用中给出了MemoryError。有没有办法可以将文件分成多个块并逐个处理?

1 个答案:

答案 0 :(得分:2)

看看iterparse

  

例如,要解析大文件,您可以尽快删除元素   正如你已经处理过的那样:

for event, elem in iterparse(source):
    if elem.tag == "record":
        ... process record elements ...
        elem.clear()