Iterparse对象没有next属性。

5

我正在解析一个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的文件时,它仍然会崩溃。在阅读以下信息后:

使用ElementTree.iterparse()清除树形结构时,内存使用量是否应该增加?

我认为这是因为我需要清除根元素。但是,尽管我已经参考了一些教程,并将其纳入了上述内容,但我仍然不断收到错误信息:

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

我还不太熟悉Python,无法理解为什么会发生这种情况,就我所知道的,我和示例代码是一致的。


你缺少了最初的上下文 = iterparse() 调用。 - Mark R.
1个回答

15

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接