我有以下代码段
import xml.etree.cElementTree as et
fstring = open(filename).read()
tree = et.fromstring(fstring)
for el in tree.findall('tag'):
do stuff然而,fstring很大(大约80MB的数据),当我尝试将字符串转换为树时,我遇到了“内存不足”错误。有没有办法绕过这一点,也许是对树进行某种懒惰的评估?
谢谢!
编辑:
我尝试使用iterparse,但它仍然在iterparse调用中给出MemoryError。有没有可能将文件拆分成多个块并逐个处理它们?
发布于 2012-11-07 05:38:04
看一看iterparse
例如,要解析大文件,您可以在处理完元素后立即删除这些元素:
对于事件,elem in iterparse(源):if elem.tag == "record":...进程记录元素...elem.clear()
https://stackoverflow.com/questions/13259768
复制相似问题