python處理(修改)xml的類別信息

原博客網址修改xml的class的信息

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
 
import os
import xml.etree.ElementTree as ET
 
origin_ann_dir = './衝鋒槍xml/'# 設置原始標籤路徑爲 Annos
new_ann_dir = './tmp/'# 設置新標籤路徑 Annotations

for dirpaths, dirnames, filenames in os.walk(origin_ann_dir):
    
    # os.walk遊走遍歷目錄名
    for filename in filenames:
        print("process...")
        if os.path.isfile(r'%s%s' %(origin_ann_dir, filename)):
            # print("yes")   # 獲取原始xml文件絕對路徑,isfile()檢測是否爲文件 isdir檢測是否爲目錄
            origin_ann_path = os.path.join(r'%s%s' %(origin_ann_dir, filename))   # 如果是,獲取絕對路徑(重複代碼)
            new_ann_path = os.path.join(r'%s%s' %(new_ann_dir, filename))

            tree = ET.parse(origin_ann_path)  # ET是一個xml文件解析庫,ET.parse()打開xml文件。parse--"解析"
            root = tree.getroot()   # 獲取根節點

            for object in root.findall('object'):   # 找到根節點下所有“object”節點
                name = str(object.find('name').text)  # 找到object節點下name子節點的值(字符串)

                # 如果name等於str,則刪除該節點
                # if (name in ["car_head"]):
                #     root.remove(object)
    
                 # 如果name等於str,則修改name
                if(name in ["Submachine gun"]):
                    object.find('name').text = "submachinegun"
        
            # 檢查是否存在labelmap中沒有的類別
            for object in root.findall('object'):
                name = str(object.find('name').text)
                if not (name in ["submachinegun"]):
                    print(filename + "------------->label is error--->" + name)
                tree.write(new_ann_path)#tree爲文件,write寫入新的文件中。

自己修改了部分,並且對其了代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章