【发布时间】:2012-11-06 21:33:15
【问题描述】:
我有以下代码段
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。有没有办法将文件分成多个块并逐个处理?
【问题讨论】:
-
根据您想对数据执行的操作,您可以只编写一个 sax 解析器 - 与 dom 解析器相比,它们非常轻量级。
-
您可以使用
iterparse。另请参阅:stackoverflow.com/a/7699801/396458
标签: python xml elementtree