2015-02-16 3 views
3

Я разбираю файл 700mb, у меня есть следующий код, который отлично работает в моем тестовом файле без строки context.iter (context) и event, elem = context.next().Объект Iterparse не имеет атрибута 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, и я не могу понять, почему это происходит, насколько я вижу, я согласен с примерами.

+0

Вы пропускаете исходный контекст = iterparse() вызов. –

ответ

7

Предполагая, что вы используете Python3, синтаксис итератор next(context) вместо context.next()