У меня есть две папки, в одной папке которых находятся тысячи изображений, а в другой папке - соответствующие файлы. xml. XML имена файлов и изображений совпадают (например, 2007. xml и 2007.jpg). Теперь я хотел бы добавить имя изображения (2007.jpg) в соответствующий файл (2007. xml). . xml Формат файла:
<?xml version='1.0' encoding='ASCII'?>
<annotation>
<size>
<width>1820</width>
<height>940</height>
</size>
<object>
<name>Car</name>
<bndbox>
<xmin>74.0</xmin>
<ymin>509.0</ymin>
<xmax>236.0</xmax>
<ymax>609.0</ymax>
</bndbox>
</annotation>
Я хочу добавить новый SubElement
<?xml version='1.0' encoding='ASCII'?>
<annotation>
<filename>2007.jpg</filename>
<size>
<width>1820</width>
<height>940</height>
</size>
<object>
<name>Car</name>
<bndbox>
<xmin>74.0</xmin>
<ymin>509.0</ymin>
<xmax>236.0</xmax>
<ymax>609.0</ymax>
</bndbox>
</annotation>
Я пытаюсь следующим образом:
import xml.etree.ElementTree as ET
import os
doc = ET.parse('00390.xml')
root = doc.getroot()
s = '/image/00390.jpg'
filename = (os.path.basename(s))
userElement = ET.Element("annotation")
newSub = ET.SubElement(userElement, "filename")
newSub.set(filename, '')
root.insert(0, newSub)
tree = ET.ElementTree(root)
tree.write(open('3.xml', 'w'), encoding = 'UTF-8')
Вывод получен : <filename 00390.jpg=""/>
Хотя вывод должен быть <filename>00390.jpg</filename>
Я думаю, что проблема в использовании newSub.set (), который принимает 3 входных аргумента.