我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

项目场景:

在做目标检测时,重新进行标注会耗费大量的时间,如果能够批量对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/…/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:  # 对所有文件进行循环遍历处理
        path1 = "./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(path1, xml_declaration=True) # 保存到指定文件
        pass
if __name__ == '__main__':
    test()

总结

到此这篇关于python批量修改xml文件中的信息的文章就介绍到这了,更多相关python批量修改xml内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

这篇文章跟大家分析一下“python怎么批量修改xml文件中的信息”。内容详细易懂,对“python怎么批量修改xml文件中的信息”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“p
2023-06-26

WordPress如何批量修改文章信息

本篇内容介绍了“WordPress如何批量修改文章信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!你是否遇到
2023-03-13

python文件操作3--批量修改文件后

1、引言需要把.dat 格式 转化成 .txt格式2、实现##python批量更换后缀名import os# 列出当前目录下所有的文件files = os.listdir('.')#print('files',files)for filen
2023-01-31

Python批量修改文本文件内容的方法

Python批量替换文件内容,支持嵌套文件夹import os path="./" for root,dirs,files in os.walk(path): for name in files: #print name if name.e
2022-06-04

实例讲解Python批量修改文件名

本篇文章给大家带来了关于python视频教程的相关知识,其中主要介绍了关于批量修改文件名的相关问题,包括了在原有的名字前中后批量加字、所有文件重新命名并添加序号等等内容,下面一起来看一下,希望对大家有帮助。随意一点,这是我刚刚新建的文件夹和我存放的路径。 我们来看看代码,我都详细注释了。import os #导入模块filename = C:\\Users\\Administrator\\Deskt
2022-06-21

linux中怎么批量修改文件名

这篇文章主要为大家展示了“linux中怎么批量修改文件名”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中怎么批量修改文件名”这篇文章吧。使用 rename 命令 ===========
2023-06-09

Python利用os模块批量修改文件名

初学Python.随笔记录自己的小练习.通过查阅资料os模块中rename和renames都可以做到他们的区别为.rename:只能修改文件名   renames:可以修改文件名,还可以修改文件上级目录名称另一个用到的方法是os.listd
2023-01-31

Python实现自动批量修改文件名称

这篇文章主要为大家详细介绍了如何基于Python语言,实现按照一定命名规则批量修改多个文件的文件名的效果,文中的示例代讲解详细,感兴趣的可以了解一下
2023-01-30

怎么在linux 中批量修改文件名

这篇文章将为大家详细讲解有关怎么在linux 中批量修改文件名,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体办法: Linux中"-"有特殊的含义,比如在命令的后面加"-"表示后面跟的是
2023-06-13

Python批量将csv文件转化成xml文件的实例

一、前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的
2022-06-02

linux中批量修改文件名的脚本代码

使用 rename 命令 ======================== NAME rename - Rename files SYNOPSIS rename from to file... =======================
2022-06-04

Shell中怎么批量修改图片文件名

这篇文章给大家介绍Shell中怎么批量修改图片文件名,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:for i in `ls _*.png`; do mv "$i" `echo "$i" |awk -F _0
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录