Обработка огромного XML-файла в Python с использованием LXMLPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обработка огромного XML-файла в Python с использованием LXML

Сообщение Anonymous »

Мне нужно обработать большой XML-файл (10 ГБ) с помощью Python. Из-за ограничений памяти я не могу загрузить все сразу, поэтому я узнал о библиотеке LXML и ее возможностях быстрого анализа.
На данный момент это моя установка:

Код: Выделить всё

    context = etree.iterparse(input_file, events=("end",), tag="Product", huge_tree=True)

for event, elem in context:
self.extract_data(elem)

# Clear the element to free memory
elem.clear()
while elem.getprevious() is not None:
del elem.getparent()[0]
extract_data на данный момент является пустой функцией. При такой настройке при обработке XML-файла и элементов с тегом Product проблем с памятью не возникает. Проблема появляется после окончания элементов Product. В XML последняя строка огромна. Я даже не могу его прочитать, потому что Notepad++ не загружает последнюю строку. Он содержит кучу элементов «Service» в одной строке, и я думаю, что когда iterparse пытается проверить, есть ли тег Person, происходит что-то странное, и моя память увеличивается до 12 ГБ, пока скрипт не завершится.
Мой вопрос: как я могу решить эту проблему с памятью, не завершая преждевременно итератор, потому что в будущем мне тоже понадобятся служебные элементы.

Подробнее здесь: https://stackoverflow.com/questions/788 ... using-lxml
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»