【Python】批量修改图片文件名和xml文件信息

2023-11-18

在使用tensorflow进行数据训练时,由于原图片文件名较繁琐,且由于根据原图片名生成的xml标签文件中生成了包含filename的标签属性,不利于后期测试训练效果,故通过Python代码对图片名和xml文件信息进行批量修改为由0开始的顺序递增文件名,以配合后期的测试工作,在此记录下。首先,这是图片名称和xml文件信息:

图片文件名:

标签文件名:

xml信息:

Python代码如下:

#coding:utf-8
from PIL import Image
import os.path
import glob
import xml.etree.ElementTree as ET
import xml.dom.minidom

i = 0
xmldir = "E:\\object-detection-Game-2018-5-31\\xmls"
imgsdir = "E:\\object-detection-Game-2018-5-31\\imgs"
outdir = "E:\\object-detection-Game-2018-5-31\\imgs"
for xmlfile in os.listdir(xmldir):
    xmlname = os.path.splitext(xmlfile)[0]
    for pngfile in os.listdir(imgsdir):
        pngname = os.path.splitext(pngfile)[0]
        if pngname == xmlname:
             # 修改图片文件名
             # 图片文件名修改前后的路径
             olddir = os.path.join(os.path.abspath(imgsdir), pngname + ".png")
             newdir = os.path.join(os.path.abspath(imgsdir), str(i)+".png")
             os.rename(olddir, newdir)
             print(xmlfile, '----->', str(i) + '.png')
             # 修改filename结点属性
             # 读取xml文件
             dom = xml.dom.minidom.parse(os.path.join(xmldir, xmlfile))
             root = dom.documentElement

             # 获取标签对filename之间的值并赋予新值i
             root.getElementsByTagName('filename')[0].firstChild.data = str(i) + '.png'

             # 将修改后的xml文件保存
             # xml文件修改前后的路径
             old_xmldir = os.path.join(xmldir, xmlfile)
             new_xmldir = os.path.join(xmldir, str(i)+'.xml')
             # 打开并写入
             with open(old_xmldir, 'w') as fh:
                 dom.writexml(fh)
             os.rename(old_xmldir, new_xmldir)
             i += 1
print('total number is ', i)

运行结果如下:

修改后的文件信息:

 

reference:

https://blog.csdn.net/LOVE1055259415/article/details/79166754

https://blog.csdn.net/wklken/article/details/7603071

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python】批量修改图片文件名和xml文件信息 的相关文章

随机推荐

  • js url上添加随机数防止缓存

    1 通常使用ajax访问url添加 JS ajax请求地址后加随机参数 比如XXXX t new Date getTime 或者 在url后面加一个随机数 url test jsp number Math random 浏览器为了提高用户访
  • 芯片细分领域

  • 苹果笔记本怎么查看计算机基本信息,如何查询苹果电脑型号_查询苹果电脑型号的方法...

    新买入苹果电脑后无法确认是什么型号 虽然可以通过电脑外箱和机身标签识别 但此不够内容不够详细 那么还有什么办法查询苹果电脑型号呢 Mac的机型信息并不是直接可以在电脑的系统信息中查询到 而是根据Mac的信息来对比查询 下面快来看看操作方法
  • Android开发之合并文件的几种方式

    下面介绍合并文件的几种方式 并通过合并amr文件来举例介绍合并文件的具体流程 amr格式的文件头是6字节 所以在进行文件合并的时候要减去除第一个文件以外的其他文件的文件头 注意 不同文件的文件头是不一样的 所以在合并的时候根据不同文件相应的
  • 字节流

    import java io FileInputStream import java io FileNotFoundException import java io FileOutputStream import java io IOExc
  • AltiumDesigner安装及基本使用

    目录 一 Altium Designer2018下载安装 二 配置Altium Designer 三 元件库下载安装 四 简单使用软件画出基本电路图 五 总结心得 六 参考链接 一 Altium Designer2018下载安装 百度网盘下
  • 多模态模型学习1——CLIP对比学习 语言-图像预训练模型

    多模态模型学习1 CLIP对比学习 语言 图像预训练模型 学习前言 什么是CLIP模型 代码下载 CLIP实现思路 一 网络结构介绍 1 Image Encoder a Patch Position Embedding b Transfor
  • SQL中with as 用法

    with temp1 as select from table limit 10 Select from temp1 也可以嵌套 with temp1 as select from table limit 10 temp2 as selec
  • js添加类名的两种方法

    1 通过className来添加 删除类名 添加类名 获取元素 className 类名1 类名2 多个类名用空格隔开 移除类名 获取元素名 className 直接等于一个空字符串即可删除类名 2 通过classList来添加 删除类名
  • GLES2.0中文API-glHint

    名称 glHint 指定特定于实现的提示 C规范 void glHint GLenum target GLenum mode 参数 target 指定一个符号常量 指示要控制的行为 接受GL GENERATE MIPMAP HINT mod
  • 线程安全的单例模式

    线程安全的单例模式 单例模式 属于创建类型的一种常用的软件设计模式 通过单例模式创建的类在当前进程中只有一个实例 一份资源只能被申请加载一次 如何实现 饿汉模式 资源在程序初始化的时候就去加载 后边使用的时候直接使用 使用会非常流畅 但是有
  • 霍布森选择效应(Hobson choice Effect)

    1631年 英国剑桥商人霍布森从事马匹生意 他说 你们买我的马 租我的马 随你的便 价格都便宜 霍布森的马圈大大的 马匹多多的 然而马圈只有一个小门 高头大马出不去 能出来的都是瘦马 赖马 小马 来买马的左挑右选 不是瘦的 就是赖的 霍布森
  • PHP定时任务脚本模板带日志记录

  • 超市商品信息管理系统/超市管理系统的设计与实现

    摘 要 随着现在网络的快速发展 网上管理系统也逐渐快速发展起来 网上管理模式很快融入到了许多国家的之中 随之就产生了 超市商品信息管理系统 这样就让超市商品信息管理系统更加方便简单 对于本超市商品信息管理系统的设计来说 系统开发主要是采用j
  • 【线性代数】第一章 1.3逆矩阵

    上一篇 1 2 高斯消元法与矩阵的初等变换 目录 一 逆矩阵的概念与性质 二 用行初等变换求逆矩阵 一 逆矩阵的概念与性质 前面我们定义了矩阵的加法 减法和乘法三种运算 自然的 欲在矩阵中引入类似于除法的概念 其关键在于引入类似于倒数的概念
  • STM32入门之GPIO详解

    一 GPIO基础知识 大家在做单片机相关项目开发时候 相信大家拿到板子的第一件事就是点亮开发板上的LED指示灯 也就是说我们第一件事就是对单片机的IO口进行操作 不管是51单片机还是32单片机亦或是arduino 我们想要控制一个最基本的外
  • Markdown编辑器【写作技巧】

    CSDN的MD编辑器 写作技巧 0 Markdown的公式编辑技巧 单个公式用 begin equation 多行公式 begin align 或者 begin array 1 在线LaTeX公式的编辑器 2 继续补充 color Oran
  • 【转】OCaml基础知识

    出自 http www nirvanastudio org ocaml the basics of ocaml html 注释 OCaml的注释是用 and 来分隔的 如下 这是一个单行注释 这是一个 多行 注释 换句话说 注释的方式和原始
  • 求最大公约数的快速算法

    stein 算法求最大公约数 和欧基里德算法相比 效果更好 主要思想如下 化归思想 1 m为奇数时 1 n也为奇数 gcd m n gcd m n 2 m n 2 2 n为偶数 gcd m n gcd m n 2 2 m为偶数时 1 n也为
  • 【Python】批量修改图片文件名和xml文件信息

    在使用tensorflow进行数据训练时 由于原图片文件名较繁琐 且由于根据原图片名生成的xml标签文件中生成了包含filename的标签属性 不利于后期测试训练效果 故通过Python代码对图片名和xml文件信息进行批量修改为由0开始的顺