lxml: сериализация большого etree напрямую в zipfile без использования ETree tostring () - PullRequest
0 голосов
/ 26 февраля 2019

Мое дерево Python lxml расширяется до 5 ГБ, когда я сериализую его с помощью метода toString ().ОС Linux убивает процесс, потому что ему не хватает памяти.

Технически нет необходимости создавать полный XML-файл в памяти, поскольку он сразу записывается в zip-архив.

Есть ли способ сериализации дерева как потока в zip-архив?

Вот мой текущий код (фрагмент):

import zipfile
from lxml import etree as ET

# Create a zipfile archive
zip_out = zipfile.ZipFile('outputfile.zip', 'w', compression=zipfile.ZIP_DEFLATED)
# serialize lxml etree to string and write to archive
zip_out.writestr('treefile.xml', large_etree.tostring())

Один из способов может бытьзаписать etree в файл tmp, а затем записать этот файл в архив.Не большой обходной путь и, вероятно, также медленный.

...