Iterparse对象接下来没有属性

时间:2015-02-16 13:27:17

标签: python memory iterparse celementtree

我正在解析一个700mb的文件,我有以下代码可以在我的测试文件上正常工作,没有行context.iter(context)和event,elem = context.next()。

form xml.etree import cElementTree as ET
source = ("AAT.xml")
context = iter(context)
event, root = context.next()
for event, elem in context:
         if event == event("end"):
             some processing...
             elem.clear()
         root.clear()

然而,当我转向iterparse 700mb文件时,它仍然崩溃了。读完了:

Should memory usage increase when using ElementTree.iterparse() when clear()ing trees?

我相信这是因为我需要清除根目录,但是我已经遵循了上面已经合并的一些教程我不断收到错误:

line 9, in <module>
event, root = context.next()
AttributeError: 'iterparse' object has no attribute 'next'

我还是Python的新手,我无法弄清楚为什么会发生这种情况,据我所知,我与这些例子一致。

1 个答案:

答案 0 :(得分:12)

假设您使用的是Python3,迭代器语法为next(context)而不是context.next()