python使用xml.dom解析xml并写入txt

本文介绍了一种将XML标注文件转换为TXT格式的方法,通过解析XML文件中的图像路径、对象边界框等信息,并将其写入TXT文件,适用于批量处理图像标注数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml文件示例:

<annotation verified="no">
  <folder>crossroad</folder>
  <filename>000329</filename>
  <path>D:\&#27979;&#35797;\&#20154;&#33080;\crossroad\000329.jpg</path>
  <source>
    <database>Unknown</database>
  </source>
  <size>
    <width>1920</width>
    <height>1080</height>
    <depth>3</depth>
  </size>
  <segmented>0</segmented>
  <object>
    <name>face</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <Difficult>0</Difficult>
    <bndbox>
      <xmin>1735</xmin>
      <ymin>98</ymin>
      <xmax>1884</xmax>
      <ymax>280</ymax>
    </bndbox>
  </object>
  <object>
    <name>face</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <Difficult>0</Difficult>
    <bndbox>
      <xmin>789</xmin>
      <ymin>480</ymin>
      <xmax>838</xmax>
      <ymax>537</ymax>
    </bndbox>
  </object>
</annotation>


解析xml,并写入txt

#coding=utf-8
import xml.dom.minidom as xmldom
import os


def openXml(filepath,txtpath):
    for root,dirs,files in os.walk(filepath):
        for file in files:
            if os.path.splitext(file)[1] == '.xml':
                str1 = root.split("\\")[1]

                path = os.path.join(root,file)
                # 打开xml文档
                dom = xmldom.parse(path)
                #得到根节点
                annotation = dom.documentElement
                filename = annotation.getElementsByTagName("filename")[0].childNodes[0].data
                str1 = str1 + "/" + filename
                objects = annotation.getElementsByTagName("object")

                for object in objects:
                    xmin = object.getElementsByTagName("xmin")[0].childNodes[0].nodeValue
                    ymin = object.getElementsByTagName("ymin")[0].childNodes[0].nodeValue
                    xmax = object.getElementsByTagName("xmax")[0].childNodes[0].nodeValue
                    ymax = object.getElementsByTagName("ymax")[0].childNodes[0].nodeValue

                    str1 = str1 + " " + xmin + " " + ymin + " " + xmax + " " + ymax
                str1 = str1 + "\n"

                #以追加的形式写入txt
                f = open(txtpath,"a+")
                f.write(str1)
                f.close()

if __name__ == '__main__':
    #xml所在文件夹路径
    filepath = "H:\crossroad"
    #txt路径
    txtpath = "H:\crossroad\data.txt"
    openXml(filepath,txtpath)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值