python - lxml内存问题

标签 python xml lxml

我正在尝试像这样解析大型 XML 文件(>3GB):

context = lxml.etree.iterparse(path)
for action,el in self.context:
    # do sth. with el

使用 iterparse 我认为数据没有完全加载到 RAM 中,但根据这篇文章我错了: http://www.ibm.com/developerworks/xml/library/x-hiperfparse/ (参见 list 4) 尽管当我将此解决方案应用于我的代码时,一些到目前为止尚未解析的元素显然被清除了(特别是 el 的子元素)。

还有其他解决办法来解决这个内存问题吗?

提前致谢!

最佳答案

不要忘记使用 clear(),也可以选择清除根元素,如所述 here 。但据我了解,您已经在这样做,但显然您正在尝试访问已清除或尚未解析的内容。如果您能提供比“用 el 做某事”更多的东西,那将会很有帮助。您使用的是getnext()还是getprevious()? Xpath 表达式?

如果您确实不想构建树,另一个选择是使用 target parser interface ,这类似于 lxml/etree 的 SAX(但更简单)。

关于python - lxml内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4004672/

相关文章:

python - 如何展平多级/嵌套 JSON?

java在文件开头读取一个不存在的奇怪字符

python - 使用lxml在python中提取段落

python - 无法使用 xpath 获取 youtube 视频的持续时间

python - Python 中的 CGI 脚本用于搜索数据库并打印结果

python - 结合 ctypes 和 swig

python - 使用 Python 创建一个新的 RGB OpenCV 图像?

python - 使用 Expat 在 Python 中解析 XML

python - 使用 Python 3 从 xml 中提取数据

python - 查找具有特定文本的 href 子级