Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Iterparse object has no attribute next

I am parsing a 700mb file, I have the following code with works fine on my test file without the line context.iter(context) and 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()

However when I move on to iterparse the 700mb the file it still crashes out. Having read:

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

I believe this is because I need to clear the root, however having followed a few tutorials which I have incorporated above I'm continually getting an error:

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

I'm still new to Python and I cannot work out why this is happening, as far as I can see I am in line with the examples.

like image 418
ADWALSH Avatar asked Feb 16 '15 13:02

ADWALSH


1 Answers

Assuming you are using Python3, the iterator syntax is next(context) instead of context.next()

like image 65
horns Avatar answered Sep 26 '22 19:09

horns