Python 2.7.16-ImportError:没有名为etree.ElementTree的模块

时间:2019-06-17 13:51:04

标签: python xml import element elementtree

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

我指的是这个stackoverflow链接Python 2.5.4 - ImportError: No module named etree.ElementTree。我指的是本教程https://stackabuse.com/reading-and-writing-xml-files-in-python/。我仍然不知道该怎么解决。我试图替换

“从elementtree导入ElementTree”

“从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

2 个答案:

答案 0 :(得分:0)

etree包由“ ElementTree”和“ lxml”提供,两者相似,但据报道ElementTree在python 2.7中有错误,并且在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作为大字符串传递,以使其更加艰难。 两者的所有写入操作都将相同。

答案 1 :(得分:0)

import xml.etree.ElementTree as xml

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

然后它将起作用。