中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么批量修改xml文件中的信息

發布時間:2022-01-17 18:09:06 來源:億速云 閱讀:293 作者:kk 欄目:開發技術

這篇文章跟大家分析一下“python怎么批量修改xml文件中的信息”。內容詳細易懂,對“python怎么批量修改xml文件中的信息”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠對大家有所幫助。下面跟著小編一起深入學習“python怎么批量修改xml文件中的信息”的知識吧。

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

項目場景:

在做目標檢測時,重新進行標注會耗費大量的時間,如果能夠批量對xml中的信息進行修改,那么將會節省大量的時間,接下來將詳細介紹如何修改標注文件xml中的相關信息。

問題描述:

例如:當我有一批標注好的xml文件,文件格式如下圖所示 :

<?xml version='1.0' encoding='us-ascii'?>
<annotation>
	<folder>VOC2012</folder>
	<filename>x0y1115.png</filename>
	<source>
		<database>The VOC2007 Database</database>
		<anotation>PASCAL VOC2007</anotation>
		<image>flickr</image>
	</source>
	<size>
		<width>2233</width>
		<height>2177</height>
		<depth>3</depth>
	</size>
	<segmented>1</segmented>
	<object>
		<name>[1]</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>1</difficult>
		<bndbox>
			<xmin>0</xmin>
			<ymin>1115</ymin>
			<xmax>30</xmax>
			<ymax>1145</ymax>
		</bndbox>
	</object>
</annotation>
        }

分析:

可以發現整個標注文件的層級是按照annotation------folder/filename/&hellip;/object------name/pose/truncated/difficult/bndbox------xmin/ymin/xmax/ymax這樣的格式來的。現在我需要修改標注目標的類別信息(將[1]改成lack),其他信息同理可以修改。Python代碼如下:

解決方案:

import os
import os.path
from xml.etree.ElementTree import parse, Element
#批量修改xml中內容
def test():
    path = "./datasets/Annotations/" # xml文件所在的目錄
    files = os.listdir(path)  # 遍歷文件夾下所有文件名稱
    for xmlFile in files:  # 對所有文件進行循環遍歷處理
        path2 = "./datasets/Annotations/"+xmlFile #定位當前處理的文件的路徑
        newStr = os.path.join(path, xmlFile)

        dom = parse(newStr)  # 獲取xml文件中的參數
        root = dom.getroot()  # 獲取數據結構

        for obj in root.iter('object'): # 獲取object節點中的name子節點(此處如果要換成別的比如bndbox)
            name = obj.find('name').text # 獲取相應的文本信息
            #  以下為自定義的修改規則,我這里把文本信息為[1]~[5]的內容改成lack,依次類推
            if name in ['[1]','[2]','[3]','[4]','[5]']:
                new_name = 'lack'
            elif name in ['[6]','[7]','[8]','[9]','[10]']:
                new_name = 'black_point'
            elif name in ['[11]','[12]','[13]','[14]','[15]']:
                new_name = 'crack'
            else:
                new_name = 'Satellite_InkDrop'
            obj.find('name').text = new_name # 修改
        dom.write(path2, xml_declaration=True) # 保存到指定文件
        pass
if __name__ == '__main__':
    test()

關于python怎么批量修改xml文件中的信息就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意小編的更新。謝謝大家關注一下億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莲花县| 齐齐哈尔市| 曲周县| 于都县| 蓬莱市| 嘉善县| 大洼县| 景宁| 山阴县| 建瓯市| 广宗县| 湛江市| 宜兴市| 从江县| 泗洪县| 即墨市| 田东县| 察哈| 江城| 安庆市| 南丰县| 天峨县| 信宜市| 大新县| 鹤壁市| 阳东县| 石门县| 连江县| 宜丰县| 稷山县| 库尔勒市| 班玛县| 丽江市| 云和县| 甘南县| 体育| 广元市| 锡林浩特市| 夏河县| 南溪县| 迁安市|