【问题标题】:Python 2.7.16 - ImportError: No module named etree.ElementTreePython 2.7.16 - ImportError:没有名为 etree.ElementTree 的模块
【发布时间】:2019-06-17 13:51:04
【问题描述】:

我正在制作一个脚本来执行创建数据并将数据写入 XML 文件。错误是没有模块没有模块名称

我参考了这个 stackoverflow 链接,Python 2.5.4 - ImportError: No module named etree.ElementTree。我参考了这个教程,https://stackabuse.com/reading-and-writing-xml-files-in-python/。我仍然不明白解决方案是什么。我试图替换

“从元素树导入元素树”

"从 xml.etree 导入 ElementTree"

还是不行。

#!/usr/bin/python
import xml.etree.ElementTree as xml
root = xml.Element("FOLDER")

child = xml.Element("File")

root.append(child)

fn = xml.SubElement(child, "PICTURE")
fn.text = "he32dh32rf43hd23"
md5 = xml.SubElement(child, "CONTENT")
md5.text = "he32dh32rf43hd23"

tree = xml.ElementTree(root)
with open(xml.xml, "w") as fh:
   tree.write(fh)

""" 我希望结果是数据被写入 xml 文件。但我收到如下所示的错误,

  File "./xml.py", line 2, in <module>
    import xml.etree.ElementTree as xml
  File "/root/Desktop/virustotal/testxml/xml.py", line 2, in <module>
    import xml.etree.ElementTree as xml
```ImportError: No module named etree.ElementTree

【问题讨论】:

  • 您正在编写自己的 xml 模块并将其隐藏在标准库中。
  • 道歉。我没有复制导入 xml 模块。但是,在我添加了导入模块后,它仍然无法正常工作。请指教。
  • 不要调用你的文件xml.py
  • 这是一个名字。调用文件 xml.py 有什么风险
  • 我已经告诉过你了,你把同名模块隐藏在标准库中了。

标签: python xml import element elementtree


【解决方案1】:

import xml.etree.ElementTree as xml

如果您使用自己的 xml 模块,请确保在同一文件夹中有 __init__.py 文件,并请避免路径冲突。

然后它会起作用。

【讨论】:

  • init.py 和这个有什么关系?
【解决方案2】:

etree包由“ElementTree”和“lxml”提供,两者相似,但据报道ElementTree在python 2.7中有bug,在python3中运行良好。 我看到你使用的是 python 2.7,所以 lxml 可以很好地为你工作。

试试这个

from lxml import etree
from io import StringIO

tree = etree.parse(StringIO(xml_file))
# incase you need to read an XML.

print(tree.getroot())

StringIO 来自默认的 python io 包。 当您将文件传递给它时,StringIO 是必需的(我的意思是将 XML 放入文件中并将该文件传递给解析器)。 将 XML 作为一个大字符串传递时,保持它的难度是很好的。 两者的所有写入操作都是相同的。

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
  • 需要io模块吗?我认为 lxml 就足够了。
  • @AbdullahNaina 现在给出解释。
  • 我不想解析 XML,我想创建和编写 XML 文件。
  • @AbdullahNaina,在这种情况下,您可以在没有 StringIO 的情况下使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2015-12-09
  • 2012-01-26
  • 2020-12-15
  • 2015-11-17
  • 2016-07-24
  • 2017-07-15
相关资源
最近更新 更多