python批量修改xml文件的標籤屬性值

一、使用背景

之前在ubuntu下做過yolov3目標檢測的項目(Pascal VOC數據集),近期ubuntu重裝過,所以…標籤文件中的路徑都錯了,labelImg無法關聯圖片和標籤文件,對訓練也有影響。
因此需要用python批量修改xml中 filename和path兩個屬性值
在這裏插入圖片描述
所以…找輪子發現了-> https://blog.csdn.net/qq_41983165/article/details/87977712
貌似有很多錯誤,無法直接用。但提供了很好的思路,在此感謝
對其優化和修改後: 可以直接批量完整替換掉path,

以下代碼,使用時要修改爲自己的路徑,且要保證修改前標籤文件名和圖片名保持一致,代碼很簡單,自己看吧

import xml.dom.minidom
import os


path='/home/hujl/dev/darknet-master/scripts/VOCdevkit/VOC2007/Annotations' 			# 原來xml文件存放的路徑
sv_path='/home/hujl/dev/darknet-master/scripts/VOCdevkit/VOC2007/Annotations1' 	# 修改後的xml文件存放路徑
files=os.listdir(path)
for xmlFile in files:
	dom=xml.dom.minidom.parse(os.path.join(path,xmlFile)) 	#打開xml文件,送到dom解析
	root=dom.documentElement
	item=root.getElementsByTagName('path') 				# 獲取path這一node名字及相關屬性值
	a,b = os.path.splitext(xmlFile)							# 並沒有取filename標籤名,而直接用的文件名,保險期間還是用filename
	for i in item:
		i.firstChild.data='/home/hujl/dev/darknet-master/scripts/VOCdevkit/VOC2007/JPEGImages/'  # xml文件對應的圖片路徑
	with open(os.path.join(sv_path,xmlFile),'w') as fh:							
		dom.writexml(fh)					#將圖片名 之前的路徑全部替換

	# 在路徑後面 添加圖片名 如 000001.jpg
	for j in item:
		i.firstChild.data += (a + '.jpg')
	with open(os.path.join(sv_path,xmlFile),'w') as filenames:
		dom.writexml(filenames)

發佈了24 篇原創文章 · 獲贊 14 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章