首先,读取所有xml文件完整路径,写入train.txt 文本文档中,

然后读取TXT文档,逐行读取xml文档,建文件夹,用于保存解析好的TXT,写入TXT时,只需要保存类别名和坐标信息即可,中间用Tab分割

#!/usr/bin/evn python
# coding:utf-8
import os
import glob try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import sys # filename = os.listdir('F:/snow leopard/000_IMAGE_FRAME/000_B_XML/')
filename = glob.glob('F:/snow leopard/000_IMAGE_FRAME/000_B_XML/' + '*xml')
fileObject = open('train.txt', 'w') for ip in filename:
fileObject.write(ip)
fileObject.write('\n')
fileObject.close() file_srx = open("train.txt") #其中包含所有待计算的文件名
line = file_srx.readline()
while line:
f = line[:-1] # 除去末尾的换行符
tree = ET.parse(f) #打开xml文档
root = tree.getroot() #获得root节点
print ("*"*10)
filename = root.find('filename').text
filename = filename[:-4]
print (filename) dir_name = 'F:/snow leopard/Data preprocessing/txt'
if os.path.exists(dir_name) == False:
os.mkdir(dir_name) # file_object_txt = open(dir_name +'/' + filename + ".txt","a")
# # file_object_txt = open(dir_name, 'w') #写文件
# file_object_txt.write(filename +'\t') # file_object_log = open(filename + ".log", 'w') #写文件
flag = False ########################################
for size in root.findall('size'): #找到root节点下的size节点
width = size.find('width').text #子节点下节点width的值
height = size.find('height').text #子节点下节点height的值
print (width, height)
######################################## for object in root.findall('object'): #找到root节点下的所有object节点
name = object.find('name').text #子节点下节点name的值
file_object_txt = open(dir_name +'/' + filename + ".txt","a")
# file_object_txt = open(dir_name, 'w') #写文件
file_object_txt.write(name +'\t')
print (name)
bndbox = object.find('bndbox') #子节点下属性bndbox的值
xmin = bndbox.find('xmin').text
ymin = bndbox.find('ymin').text
xmax = bndbox.find('xmax').text
ymax = bndbox.find('ymax').text
file_object_txt.write(xmin+'\t' + ymin + '\t'+ xmax + '\t'+ ymax) print (xmin, ymin, xmax, ymax)
file_object_txt.close()
# file_object_log.close()
if flag == False: #如果没有符合条件的信息,则删掉相应的txt文件以及jpg文件
#os.remove(filename + ".txt")
#os.remove(filename + ".jpg")
# os.remove(filename + ".log")
pass
line = file_srx.readline()

 

参考: https://www.cnblogs.com/rainsoul/p/6283231.html

pascalVOC 标注文件,解析为TXT的更多相关文章

  1. PHP - 四级单词lrc文件解析为txt

    原始文件: 转换后文件: php代码: 首先根据需要更改文件路径. 转换后存放的文件要事先创建,为txt文件. 核心代码:正则表达式替换: <?php header('Content-type: ...

  2. Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件

    解析 robots.txt 文件 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 2016 ...

  3. Python生成PASCAL VOC格式的xml标注文件

    Python生成PASCAL VOC格式的xml标注文件 PASCAL VOC数据集的标注文件是xml格式的.对于py-faster-rcnn,通常以下示例的字段是合适的: <annotatio ...

  4. pcap文件格式及文件解析

    第一部分:PCAP包文件格式 一 基本格式: 文件头 数据包头数据报数据包头数据报...... 二.文件头: 文件头结构体 sturct pcap_file_header {      DWORD   ...

  5. C语言中.h和.c文件解析(很精彩)

    C语言中.h和.c文件解析(很精彩)   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析 ...

  6. C语言中.h和.c文件解析

    整理自C语言中.h和.c文件解析(很精彩) Part.1(林锐<高质量C/C++编程>) 通过头文件来调用库功能.在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的 ...

  7. 【转】java将excel文件转换成txt格式文件

    在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...

  8. 转-C语言中.h和.c文件解析

    C语言中.h和.c文件解析(很精彩)   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词 ...

  9. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

随机推荐

  1. oracle数据分组

    一,什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值 二,分组函数类型 Avg ,count,max,min,stddev(标准方差),sum. 函数名称 函数描述 Count 返回找到 ...

  2. win7下安装matlab后打开出错“error starting desktop”的解决办法

    在matlab快捷图标上右键,选择"还原以前的版本"--"兼容性"选项卡,在"以兼容模式运行这个程序"前面打勾,并选择"windo ...

  3. Java Netty (2)

    通过一个实例来说明Netty的使用.用1个服务器连接5个客户端线程,客户端连接上服务器以后就向服务器发送消息,服务器接收到消息后向客户端返回消息,客户端接收到消息以后,等待随机的时间,再向服务端发送消 ...

  4. Android内存分析命令(转)

    一.概述 1.1 内存指标概念 Item 全称 含义 等价 USS Unique Set Size 物理内存 进程独占的内存 PSS Proportional Set Size 物理内存 PSS= U ...

  5. ORA-01950: no privileges on tablespace xxx ORA-01950: 对表空间 'xxx'无权限

    场景: 创建用户,在用户scheme下新建了一张表,插入数据时报错 ORA-01950: 对表空间 'xxx'无权限 创建用户 /*第1步:创建临时表空间 */ create temporary ta ...

  6. group by 分组

    group by 分组:一般情况下group需与统计函数(聚合函数)一起使用才有意义 mysql中的五种统计函数: ()max:求最大值 select max(goods_price) from go ...

  7. Inno Setup入门(四)——为程序创建桌面快捷方式

    Icons这一可选段定义所有创建在开始菜单和\或其它位置 (比如桌面) 的快捷方式.一个例子如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST De ...

  8. MySQL 索引优化 Using where, Using filesort

    用Explain分析SQL语句的时候,经常发现有的语句在Extra列会出现Using filesort,根据MySQL官方文档对他的描述: 引用 MySQL must do an extra pass ...

  9. 利用Apache配置http expires值提高网站性能

    HTTP头中有个expires参数,设置一个未来的时间,在这时间以前,浏览器会先从cache读取,如果没有再从服务器中读取.对于像图片,css,script等静态内容,只需发一次http reques ...

  10. JAVA删除文件及文件夹

    JAVA在删除文件或文件夹时,在java.io.File类下有个delete的方法,并且可以返回true or false, 用这个方法来删除单个文件时,很好使,但在删除文件夹时,如果文件夹下面有文件 ...