lxml:不使用ETree tostring()将大型etree直接序列化为zipfile

时间:2019-02-25 23:35:43

标签: python lxml

当我使用toString()方法进行序列化时,我的python lxml树会扩展到5GB。 Linux OS终止了该进程,因为它耗尽了内存。

从技术上讲,由于立即将其写入zip存档,因此无需在内存中创建完整的xml。

有没有一种方法可以将树序列化为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文件,然后将该文件写入存档。这不是一个很好的解决方法,可能也很慢。

0 个答案:

没有答案