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