我需要在Python中编写一个解析器,它可以在没有太多内存(仅2 GB)的计算机上处理一些非常大的文件(> 2 GB).我想在lxml中使用iterparse来做到这一点.
我的文件格式为:
<item>
<title>Item 1</title>
<desc>Description 1</desc>
</item>
<item>
<title>Item 2</title>
<desc>Description 2</desc>
</item>
Run Code Online (Sandbox Code Playgroud)
到目前为止我的解决方案是:
from lxml import etree
context = etree.iterparse( MYFILE, tag='item' )
for event, elem in context :
print elem.xpath( 'description/text( )' )
del context
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个解决方案仍然占用了大量的内存.我认为问题在于,在处理每个"ITEM"后,我需要做一些事情来清理空的孩子.在处理我的数据到正确清理之后,有人可以提供一些建议吗?
我有一个我想用python解析的XML文件.什么是最好的方法呢?考虑到内存整个文档将是灾难性的,我需要以某种方式一次读取一个节点.
我所知道的现有XML解决方案:
但是因为我提到的问题,我担心他们不会上班.另外我无法在文本编辑器中打开它 - 用于处理巨型文本文件的任何关于genrao的好技巧?