gpt4 book ai didi

python - 使用 LXML ETREE 在本地计算机上使用 Python 解析 XML 文件时出现问题

转载 作者:行者123 更新时间:2023-11-28 17:42:15 27 4
gpt4 key购买 nike

我在 Mac OSX 上使用 Python 2.7.3 并安装了 lxml 版本 3.3.3。我在同一目录中有几个 xml 文件,例如 MyDir/file1.xmlMyDir/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 文件中解析和提取信息(假设我可以使用它!)。

谢谢

最佳答案

我最好使用 glob.iglob()使用 *.xml 文件掩码代替。这是更明确和安全的:

for filename in glob.iglob("MyDir/*.xml"):
tree = etree.parse(filename)
print tree.getroot()

希望对您有所帮助。

关于python - 使用 LXML ETREE 在本地计算机上使用 Python 解析 XML 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22569292/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com