Python ElementTree.parse内存不足
我使用以下简单的Python脚本作为导出后测试,以验证导出的XML是否有效Python ElementTree.parse内存不足,python,xml,xml-parsing,Python,Xml,Xml Parsing,我使用以下简单的Python脚本作为导出后测试,以验证导出的XML是否有效 from xml.etree import ElementTree try: ElementTree.parse(args[0]) except ElementTree.ParseError as e: raise Exception('%s does not contain valid XML.' % args[0]) 但是,脚本耗尽的VM似乎内存不足,最新的导出文件大小约为88Mb 但是,在本地工
from xml.etree import ElementTree
try:
ElementTree.parse(args[0])
except ElementTree.ParseError as e:
raise Exception('%s does not contain valid XML.' % args[0])
但是,脚本耗尽的VM似乎内存不足,最新的导出文件大小约为88Mb
但是,在本地工作站上对同一文件运行相同的脚本可以在大约30秒内无误地解析该文件
XML本身并不特别深,我认为最大深度大约为4级。然而,这份清单相当长,有38570项。因此,我认为可能有一种更有效的解析方法,因为我不想存储或处理解析结果,我只想确保XML是有效的。我不懂Python,但我建议检查
ElementTree.parse使用的解析器类型
from xml.etree import ElementTree
try:
ElementTree.parse(args[0])
except ElementTree.ParseError as e:
raise Exception('%s does not contain valid XML.' % args[0])
如果是DOM解析器,请尝试查找SAX解析器并使用它。SAX解析器效率更高,因为它们不存储整个DOM树。88mb不是一个大文件。我相信Python支持使用SAX进行流(基于事件)解析,这将显著降低内存需求。非常感谢,我将把我的解决方案发布到您的回答中。看起来我添加到您的回答中的解决方案是不可接受的。不知道如何传达我的解决方案,因为我被单独告知,用最终解决方案更新我的问题也不是一个好的做法。。。无论如何,我修改了这段代码:你评论中的链接应该足以帮助其他有同样问题的人。很高兴知道你成功了。