我有以下代码段
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。有没有办法可以将文件分成多个块并逐个处理?
答案 0 :(得分:2)
看看iterparse
:
例如,要解析大文件,您可以尽快删除元素 正如你已经处理过的那样:
for event, elem in iterparse(source): if elem.tag == "record": ... process record elements ... elem.clear()