Использование Python Iterparse для больших файлов XML

Мне нужно написать парсер на 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

К сожалению, это решение все еще занимает много памяти. Я думаю, проблема в том, что после обработки каждого «ЭЛЕМЕНТА» мне нужно что-то сделать, чтобы очистить пустые дочерние элементы. Может ли кто-нибудь предложить несколько советов о том, что я могу сделать после обработки моих данных для правильной очистки?

36
задан Ciro Santilli 新疆改造中心法轮功六四事件 19 November 2015 в 22:14
поделиться