Мне нужно написать парсер на Python, который может обрабатывать очень большие файлы (> 2 ГБ) на компьютере без большой памяти (всего 2 ГБ). Я хотел использовать iterparse в lxml для этого.
Мой файл имеет формат:
<item>
<title>Item 1</title>
<desc>Description 1</desc>
</item>
<item>
<title>Item 2</title>
<desc>Description 2</desc>
</item>
, и пока мое решение:
from lxml import etree
context = etree.iterparse( MYFILE, tag='item' )
for event, elem in context :
print elem.xpath( 'description/text( )' )
del context
К сожалению, это решение все еще занимает много памяти. Я думаю, проблема в том, что после обработки каждого «ЭЛЕМЕНТА» мне нужно что-то сделать, чтобы очистить пустые дочерние элементы. Может ли кто-нибудь предложить несколько советов о том, что я могу сделать после обработки моих данных для правильной очистки?