Единственная проблема с методом root.clear () - он возвращает NoneTypes. Это означает, что вы не можете, например, редактировать данные, которые вы анализируете, с помощью строковых методов, таких как replace () или title (). Тем не менее, это оптимальный метод для использования, если вы просто анализируете данные как есть.

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

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

Ответы на вопрос(1)

Ваш ответ на вопрос