草庐IT

iterparse

全部标签

python - iterparse 抛出 'no element found: line 1, column 0',我不确定为什么

我有一个网络应用程序(使用Twisted)通过Internet接收xmlblock(因为整个xml可能不会完整地出现在一个数据包中)。我的思考过程是在收到xml消息时慢慢构建它。我已经从xml.etree.ElementTree“解决”了iterparse。我一直在研究一些代码,以下(非Twisted代码)工作正常:importxml.etree.ElementTreeasetreefromioimportStringIObuff=StringIO(unicode(''))forevent,eleminetree.iterparse(buff,events=('end',)):ifel

python - 无法正确解析具有 `pythons etree.iterparse()` 的巨大 xml 文件。代码中是否存在逻辑错误?

我想解析一个巨大的文件xml文件。这个巨大文件中的记录确实看起来像this。.通常文件看起来像这样record_1...record_n我写了一些代码,可以从这个文件中选择一段录音。如果我让代码运行(需要将近50分钟,包括在MySQL数据库中的存储)我注意到,有一条记录,接缝有将近一百万作者。这一定是错误的。我什至通过查看文件来检查它,确保文件中没有错误。这篇论文只有5或6个作者,所以dblp.xml一切都很好。所以我假设我的代码中存在逻辑错误。但我不知道这可能在哪里。也许有人可以告诉我,错误在哪里?代码在iflen(auth)>2000行停止。importsysimportMySQL

python - 在 python 中使用 lxml iterparse 解析大型 .bz2 文件 (40 GB)。未压缩文件不会出现的错误

我正在尝试解析以bz2格式压缩的OpenStreetMap的planet.osm。因为已经41G了,不想解压完全。所以我想出了如何使用bz2和lxml解析planet.osm文件的部分,使用以下代码fromlxmlimportetreeasetfrombz2importBZ2Filepath="where/my/fileis.osm.bz2"withBZ2File(path)asxml_file:parser=et.iterparse(xml_file,events=('end',))forevents,eleminparser:ifelem.tag=="tag":continueif

python lxml使用iterparse编辑输出xml

我已经弄乱了lxml库有一段时间了,也许我没有正确理解它或者我遗漏了一些东西,但我似乎无法弄清楚如何在我捕获一个文件后编辑文件某些xpath,然后能够在逐个元素解析时将其写回xml。假设我们有这个xml作为例子:cherryapplechocolate我想在解析时做的是当我点击“/xml/items/pie”的xpath时在pie之前添加一个元素,所以它会像这样:cherryapplechocolate当我点击每个标记并在某些xpath编辑xml时,需要通过逐行写入文件来完成输出。我的意思是我可以让它打印起始标签、文本、属性(如果存在),然后通过对某些部分进行硬编码来打印结束标签,但这

python - 为什么 ElementTree.iterparse() 引发 ParseError?

importxml.etree.ElementTreeasETxmldata=file('my_xml_file.xml')tree=ET.parse(xmldata)root=tree.getroot()root_iter=root.iter()现在我可以调用root_iter.next()并获取我的Element对象。问题是我正在处理的真实文件很大,我无法将所有文件都放入内存中。所以我正在尝试使用:parse_iter=ET.iterparse(xmldata)如果我调用parse_iter.next()它会引发以下问题Traceback(mostrecentcalllast):F

python - ElementTree iterparse 需要多长时间?

在回答另一个问题时,有人向我展示了以下教程,其中作者声称使用iterparse在3秒内解析了一个~100MB的XML文件:http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/我正在尝试解析一个大约90MB的XML文件,并且我有以下代码:fromxml.etree.cElementTreeimport*count=0forevent,eleminiterparse('foo.xml'):ifelem.tag=='identifier'andelem.text=='bar':co

python - xml.etree.ElementTree iterparse() 仍在使用大量内存?

我一直在尝试使用iterparse来减少需要处理大型XML文档的脚本的内存占用。这是一个例子。我编写了这个简单的脚本来读取一个TMX文件并将其拆分为一个或多个输出文件,使其不超过用户指定的大小。尽管使用了iterparse,但当我将一个886MB的文件拆分为100MB的文件时,脚本会耗尽所有可用内存(使用我的8MB中的6.5个时,它会爬行)。我做错了什么吗?为什么内存使用率这么高?#!/usr/bin/python#-*-coding:utf-8-*-importargparseimportcodecsfromxml.etree.ElementTreeimportiterparse,t

python - 通过 lxml.etree.iterparse 解析单个文件中的多个 XML 声明

我需要解析一个包含各种XML文件的文件,即..等等。使用etree.iterparse时,出现以下(正确的)错误:lxml.etree.XMLSyntaxError:XMLdeclarationallowedonlyatthestartofthedocument现在,我可以预处理输入文件并为每个包含的XML文件生成一个单独的文件。这可能是最简单的解决方案。但我想知道是否存在针对此“问题”的适当解决方案。谢谢! 最佳答案 您提供的样本数据表明存在一个问题,而您提供的问题和异常则表明存在另一个问题。您是否有多个XML文档连接在一起,每个

python - 如何解决 xml.etree.ElementTree.iterparse() 中的 Unicode 错误?

我正在使用Python的xml.etree.ElementTree模块的iterparse()方法读取一个巨大的(数千兆字节)XML文件。问题是在某些XML文件的文本中偶尔会出现Unicode错误(或者至少Python3认为是Unicode错误)。我的循环是这样设置的:importxml.etree.ElementTreeasetreedeffoo():#...f=open(filename,encoding='utf-8')xmlit=iter(etree.iterparse(f,events=('start','end')))(event,root)=next(xmlit)for(

python - 使用多处理解析非常大的 XML 文件

我有一个巨大的XML文件,我有点不知道如何处理它。它有60GB,我需要阅读它。我在想是否有办法使用多处理模块来读取python文件?有没有人有任何可以向我指出的这样做的示例?谢谢 最佳答案 对于这种大小的文件,我建议您使用流式XML解析器。在Python中,这将是来自cElementTree或lxml.etree的iterparse方法:http://effbot.org/zone/element-iterparse.htm 关于python-使用多处理解析非常大的XML文件,我们在St