Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ElementTree.parse内存不足_Python_Xml_Xml Parsing - Fatal编程技术网

Python ElementTree.parse内存不足

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 但是,在本地工

我使用以下简单的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

但是,在本地工作站上对同一文件运行相同的脚本可以在大约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进行流(基于事件)解析,这将显著降低内存需求。非常感谢,我将把我的解决方案发布到您的回答中。看起来我添加到您的回答中的解决方案是不可接受的。不知道如何传达我的解决方案,因为我被单独告知,用最终解决方案更新我的问题也不是一个好的做法。。。无论如何,我修改了这段代码:你评论中的链接应该足以帮助其他有同样问题的人。很高兴知道你成功了。