批量修改XML中的标签值

因为用labelimg给图片打标签的时候打错了,本来是water dispenser弄成了drinking_fountain了,尴尬_(:з)∠)_,并且已经标了1500张了,只能自己写程序改,xml文件示例如下:



  drinking_fountain
  1
  E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain\1.jpg
  
    Unknown
  
  
    720
    1280
    3
  
  0
  
    drinking_fountain
    Unspecified
    0
    0
    
      153
      6
      587
      1157
    
  

用来修改的python代码的如下:

import os
import os.path
from xml.etree.ElementTree import parse, Element
#批量修改xml中内容
def test():
    path = "E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain_label/"#xml文件所在的目录
    files = os.listdir(path)  # 得到文件夹下所有文件名称
    s = []
    for xmlFile in files:  # 遍历文件夹
        if not os.path.isdir(xmlFile):  # 判断是否是文件夹,不是文件夹才打开
            print
            xmlFile
            pass
        path = "E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain_label/"
        print(xmlFile)
        path1 = "E:\LabelImgv1.3.3\windows_v1.3.3\drinking_fountain_label/"+xmlFile#定位当前处理的文件的路径
        newStr = os.path.join(path, xmlFile)
        name = "water dispenser"
        dom = parse(newStr)  ###最核心的部分,路径拼接,输入的是具体路径
        root = dom.getroot()
        print(root)
        for obj in root.iter('object'):#获取object节点中的name子节点
            obj.find('name').text=name
            name1 = obj.find('name').text#修改
            print(name1)
        dom.write(path1, xml_declaration=True)#保存到指定文件
        pass
if __name__ == '__main__':
    test()

这个代码是借鉴着这里改的。

你可能感兴趣的:(图片处理)