使用python cElementTree快速检查大型XML中标记的存在性

使用python cElementTree快速检查大型XML中标记的存在性,python,elementtree,Python,Elementtree,我有大小从数百兆字节到数十千兆字节的XML文件,并使用Python的cElementTree来处理它们。由于内存有限且速度较慢,我不想使用et.parse然后find或findall方法将所有内容加载到内存中,以查找标记是否存在(实际上我没有尝试这种方法)。现在我只需使用et.iterparse遍历所有标记即可实现此目的。如果标记位于文件末尾附近,那么这也可能非常慢。我想知道是否有更好的方法来实现这一点,并获得标签的位置?如果我知道标记所处的顶层(例如索引),其大小比文件的其他部分小得多,是否可

我有大小从数百兆字节到数十千兆字节的XML文件,并使用
Python的
cElementTree
来处理它们。由于内存有限且速度较慢,我不想使用
et.parse
然后
find
findall
方法将所有内容加载到内存中,以查找标记是否存在(实际上我没有尝试这种方法)。现在我只需使用
et.iterparse
遍历所有标记即可实现此目的。如果标记位于文件末尾附近,那么这也可能非常慢。我想知道是否有更好的方法来实现这一点,并获得标签的位置?如果我知道标记所处的顶层(例如索引),其大小比文件的其他部分小得多,是否可以迭代顶层标记,然后以该部分为目标进行解析?我在网上搜索过,但令人惊讶的是没有相关的问题发布。我错过什么了吗?提前感谢。

我通过逐块读取文件来解决这个问题,而不是使用
cElementTree
解析文件。我的标记接近文件的末尾,因此根据,我使用
file.seek
file.read
方法和
line=f.read(block\u size)
从文件末尾一次读取一块指定大小的上下文,然后简单地使用
“这回答了你的问题吗@不要!我说我已经使用了
iterparse
检查了所有标记,以避免内存问题,这与发布在那里的内容相同。请仔细阅读我的问题。“避免内存问题”:已接受的答案,显示如何避免内存问题。@stovfl此问题已通过使用
clear
方法解决。我的意思是,使用
iterparse
遍历所有标记以确定标记是否存在仍然非常缓慢。我的问题是,我能以更快的方式实现这一点吗?这是我要求的,不是记忆问题。