我正在使用Python中的cElementTree解析非常大的XML文件(大小从50Mb到1Gb不等)。让我们考虑以下示例xml文件:
<rootTag>
<innerTag>...</innerTag>
<innerTag>...</innerTag>
<!-- repeat a large number of times -->
<innerTag>...</innerTag>
</rootTag>
cElementTree允许我迭代地解析innerTag。因此,我可以通过一个innerTag解析后清除它,我可以从内存中清除它,为新的innerTag让路。
到目前为止一切顺利。
对于我的解析,我应该识别一些感兴趣的内部标签,然后将一些包含的信息存储到python列表中。
resultList = []
#Logic for each innerTag
if condition == True:
resultList.append(usefulInfo) #some object
这里的问题是,由于列表保存在内存中,因此随着更多对象的附加而耗尽。
我被建议使用 del 来解析我在解析时使用的所有临时变量。然而,我不明白我如何 del 列表暂时只是在我迭代列表时才加载到内存中。
非常感谢任何帮助。如果需要任何其他信息,请与我们联系。