为什么这个Python脚本失败了?(xml.etree)

2024-06-02 09:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

第一:我知道任何想要帮助的人都会要求提供演示错误的代码。这将需要一个项目的ZIP文件,我不知道如何将文件附加到StackOverflow问题。如果有人告诉我怎么上传,我会很高兴的

这是一个“我没有改变任何东西,但它坏了”的环境,环境是Windows 10、Python 3.8和PyCharm 2019.3.5

几周前,我让项目处于完全调试状态。今天我添加了一个函数定义和对它的调用。现在,当程序尝试为XML树创建解析器时失败了。。。在调用新函数之前

在脚本的早期,我从xml导入etree:

from xml import etree

在出现故障时,我尝试创建一个解析器:

_parser = etree.ElementTree.XMLParser(encoding="iso-8859-1")

我得到的信息是:

Connected to pydev debugger (build 193.7288.30)
Traceback (most recent call last):
  File "C:/Users/... /PartConfig/PartConfig.py", line 47, in <module>
    _parser = etree.ElementTree.XMLParser(encoding="iso-8859-1")
AttributeError: module 'xml.etree' has no attribute 'ElementTree'

我有一个“except”块,但它从未被执行,因为它的作用域是etree.ElementTree.ParseError

从表面上看,错误信息完全是错误的。我知道脚本找到了etree.ElementTree,因为它运行时超过了import语句,当我将模块名称拼错为实验时,它就失败了。ElementTree是标准Python库中xml.etree的一个元素,因此我想不出脚本有什么办法会像它那样失败。消息一定是想告诉我什么,但是什么


Tags: 文件项目函数import脚本parser解析器环境
2条回答

您必须使用以下语法:

from xml.etree import ElementTree
_parser = ElementTree.XMLParser(encoding="iso-8859-1")

正如@Fred Larson在他的评论中解释的那样,您必须导入模块本身,etree是一个包

I know the script found etree.ElementTree because it ran past the import statement

否。导入语句是from xml import etree。这没有提到ElementTree

ElementTree is an element of xml.etree in the standard Python library

etree是一个目录。该目录包含一个名为ElementTree.py的文件,但您不能通过简单地导入etree来访问它。(如果etree/__init__.py导入了ElementTree,您可能会这样做,但在本例中它不会)

正如@arsalan所说,您必须显式地导入ElementTree

相关问题 更多 >