Python 有没有办法从最后一个到第一个读取结构未知的大型(18GB)XML文件

Python 有没有办法从最后一个到第一个读取结构未知的大型(18GB)XML文件,python,xml,parsing,Python,Xml,Parsing,我试图使用iterparse()函数读取一个大尺寸(18GB)的XML文件,我必须将元素作为CSV文件写入。一开始运行良好,但过了一段时间,系统就会停止运行。我使用了element.clear()。仍然处理得很慢。我已经完成了将近一半的工作,那么,从最后一行读取该文件有什么步骤吗?使用SAX(而不是DOM)。这将处理这样一个事实,即您需要解析一个非常大的文件 您必须实现一个将数据写入csv的“ContentHandler” 见下例: import xml.sax from xml import

我试图使用iterparse()函数读取一个大尺寸(18GB)的XML文件,我必须将元素作为CSV文件写入。一开始运行良好,但过了一段时间,系统就会停止运行。我使用了element.clear()。仍然处理得很慢。我已经完成了将近一半的工作,那么,从最后一行读取该文件有什么步骤吗?

使用SAX(而不是DOM)。这将处理这样一个事实,即您需要解析一个非常大的文件

您必须实现一个将数据写入csv的“ContentHandler”

见下例:

import xml.sax
from xml import sax


class ExampleContentHandler(xml.sax.ContentHandler):
    def __init__(self):
        xml.sax.ContentHandler.__init__(self)

    def startElement(self, name, attrs):
        print('start:', name)

    def endElement(self, name):
        print('end:', name)

    def characters(self, content):
        print('chars:', content)

def main():
    xmlString = "<note>\n<to>Tove</to>\n<from>Jani</from>\n<heading>Reminder</heading>\n<body>Don't forget me this weekend!</body>\n</note>"

    sax.parseString(xmlString, ExampleContentHandler())


if __name__ == "__main__":
    main()
import xml.sax
从xml导入sax
类ExampleContentHandler(xml.sax.ContentHandler):
定义初始化(自):
ContentHandler.\uuuu init\uuuuu(self)
def startElement(自身、名称、属性):
打印('开始:',名称)
定义元素(自身、名称):
打印('结束:',名称)
def字符(自身、内容):
打印('字符:',内容)
def main():
xmlString=“\nTove\nJani\nReminder\n不要忘记我这个周末!\n”
parseString(xmlString,ExampleContentHandler())
如果名称=“\uuuuu main\uuuuuuuu”:
main()

嗨,巴尔德曼,我尽量不使用SAX。还有其他想法吗?为什么不使用SAX呢?