Я пишу фрагмент кода, который извлекает данные из набора XML-документов.
Код работает так, как задумано для файлов по отдельности;однако, когда я перебираю файлы, я получаю странную ошибку.
Код выглядит следующим образом:
import xml.etree.ElementTree as ET
import os
for root,dirs,files in os.walk(path):
for file in files:
if file.endswith(".xml"):
tree = ET.parse(os.path.join(root,file))
root = tree.getroot()
Когда я выполняю код, появляется следующая ошибка:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-85cdfa81e486> in <module>()
4 for file in files:
5 if file.endswith(".xml"):
----> 6 tree = ET.parse(os.path.join(root,file))
7 root = tree.getroot()
~/.pyenv/versions/3.6.0/lib/python3.6/posixpath.py in join(a, *p)
76 will be discarded. An empty last part will result in a path that
77 ends with a separator."""
---> 78 a = os.fspath(a)
79 sep = _get_sep(a)
80 path = a
TypeError: expected str, bytes or os.PathLike object, not xml.etree.ElementTree.Element
Если я удалю последнюю строку root = tree.getroot()
, тогда все снова начнет работать.У меня нет ни малейшего представления о том, что происходит.