这是最方便的方法
原因是
所以可以修改minidom.py 这是最方便的方法
这样就没有版本信息了
import os
import os.path
import xml.dom.minidom
path = "E:\\VOCdevkit\\VOC2012\\Annotations"
files = os.listdir(path) # 得到文件夹下所有文件名称
s = []
count = 0
for xmlFile in files: # 遍历文件夹
if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开
name1 = xmlFile.split('.')[0]
dom = xml.dom.minidom.parse(path + '\\' + xmlFile)
root = dom.documentElement
newfolder = root.getElementsByTagName('folder')
newpath = root.getElementsByTagName('path')
newfilename = root.getElementsByTagName('filename')
# newfolder[0].firstChild.data = 'VOCdevkit\VOC2012\JPEGImages'
# newpath[0].firstChild.data = 'VOCdevkit\VOC2012\JPEGImages' + '\\' + name1 + '.jpg'
newfilename[0].firstChild.data = name1 + '.jpg'
with open(os.path.join(path, xmlFile), 'w') as fh:
dom.writexml(fh)
print('写入name/pose OK!')
count = count + 1
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 16 10:25:40 2019
@author: w
"""
import os
import os.path
import xml.dom.minidom
path="C:/dl/1-4967-error-xml/test/"
files=os.listdir(path) #得到文件夹下所有文件名称
s=[]
for xmlFile in files: #遍历文件夹
if not os.path.isdir(xmlFile): #判断是否是文件夹,不是文件夹才打开
print(xmlFile)
#TODO
#xml文件读取操作
#将获取的xml文件名送入到dom解析
dom=xml.dom.minidom.parse(os.path.join(path,xmlFile)) #最核心的部分,路径拼接,输入的是具体路径
root=dom.documentElement
#获取标签对name/pose之间的值
name=root.getElementsByTagName('folder')
pose=root.getElementsByTagName('path')
#原始信息
print ('原始信息')
n0=name[0]
print( n0.firstChild.data)
p0=pose[0]
print( p0.firstChild.data)
#修改
n0.firstChild.data='images1'
p0.firstChild.data='C:/dl/'
#打印输出
print('修改后的 name')
print( n0.firstChild.data)
print( '修改后的 pose')
print( p0.firstChild.data)
print( '~~~~~')
with open(os.path.join(path,xmlFile),'w') as fh:
dom.writexml(fh)
print('写入name/pose OK!')
也可以生成一个脚本来修改
下载Git_v2.21.0.zip 安装
在一个文件夹中创建一个mkdir.sh
使用notepad++打开
#!/bin/sh
cd 'C:/dl/1-4967-error-xml/test/'
for file in `ls C:/dl/1-4967-error-xml/test/`
do
echo $file
sed -i '//s///g' $file
done
echo 'all is ok.'
这样也可以去除版本信息
noglass-rename2
使用git
这是git的命令大全
https://www.runoob.com/linux/linux-comm-sed.html
修改
mkdir.sh
#!/bin/sh
cd 'C:/Users/Administrator/Desktop/xml/xml1/'
for file in `ls C:/Users/Administrator/Desktop/xml/xml1/`
do
echo $file
sed -i '1d' $file
done
echo 'all is ok.'
能够删除第一行。
使用删除的方法不涉及格式转换的问题,,而且还能自动改为这个格式(unix)!
去除烦人的以后发现还有一个问题
使用notepad++打开0001.xml
原来
新生成的0001.xml
为
Unix(LF)和Windows(CR LF)区别
通过查找资料得知Unix(LF)和Windows(CR LF)区别如下:
在一个平台上使用另一种换行符的文件可能会带来意想不到的问题, 特别是在编辑程序代码时,有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。
修改方法 下载
换行符批量转换工具
https://download.csdn.net/download/qq542731976/9958424
# -*- coding: utf-8 -*-
"""
Created on Wed Jul 17 08:24:33 2019
@author: Administrator
"""
import os
import os.path
from xml.etree.ElementTree import parse, Element
#批量修改xml中内容
def test():
path = "C:\\Users\\Administrator\\Desktop\\xml" #xml文件所在的目录
files = os.listdir(path) # 得到文件夹下所有文件名称
s = []
for xmlFile in files: # 遍历文件夹
if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开
print
xmlFile
pass
path = "C:\\Users\\Administrator\\Desktop\\xml"
print(xmlFile)
path1 = "C:\\Users\\Administrator\\Desktop\\xml"+xmlFile#定位当前处理的文件的路径
newStr = os.path.join(path, xmlFile)
name = "eye-open"
dom = parse(newStr) ###最核心的部分,路径拼接,输入的是具体路径
root = dom.getroot()
print(root)
for obj in root.iter('object'):#获取object节点中的name子节点
obj.find('name').text=name
name1 = obj.find('name').text#修改
print(name1)
dom.write(path1, xml_declaration=True)#保存到指定文件
pass
if __name__ == '__main__':
test()