【发布时间】:2014-04-29 10:36:37
【问题描述】:
我在 Mac OSX 上使用 Python 2.7.3 并安装了 lxml 版本 3.3.3。我有几个 xml 文件位于同一目录中,例如 MyDir/file1.xml 和 MyDir/file2.xml。我试图将每一个都带入 python 并提取相关信息。但是,我似乎无法让etree 解析器工作。我的代码很简单:
from lxml import etree
from os import listdir
from os.path import isfile, join
xmlfiles = [x for x in listdir("MyDir") if isfile(join("MyDir",x))]
for file in xmlfiles:
doc = etree.parse(file)
get the stuff I need
但是,解析器不断向我抛出以下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 3239, in lxml.etree.parse (src/lxml/lxml.etree.c:69955)
File "parser.pxi", line 1748, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:102066)
File "parser.pxi", line 1774, in lxml.etree._parseDocumentFromURL
(src/lxml/lxml.etree.c:102330)
File "parser.pxi", line 1678, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:101365)
File "parser.pxi", line 1110, in lxml.etree._BaseParser._parseDocFromFile
(src/lxml/lxml.etree.c:96817)
File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc
(src/lxml/lxml.etree.c:91275)
File "parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:92461)
File "parser.pxi", line 620, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:91722)
IOError: Error reading file 'File1.xml': failed to load external entity
"File1.xml"
我在这里查看了几个答案,但它们都是针对特定问题的,主要是处理为解析器提供一个 html 文件,而我只是为它提供一个已经存储在我本地机器上的 xml 文件。谁能帮我弄清楚为什么这不能正常工作?
另外,有没有更好的方法来使用 python 从 xml 文件中解析和提取信息,然后是我正在采用的方法(假设我让它工作!)。
谢谢
【问题讨论】: