python批量修改xml内容和属性
想把原始的xml文件
修改为
在spyder3里面输入
# -*- 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!')
就可以实现
非常好用
但是会有<?xml version="1.0" ?>
原因是
所以可以修改minidom.py
这样就没有版本信息了
也可以生成一个脚本来修改
下载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 '/<?xml version="1.0" ?><annotation>/s/<?xml version="1.0" ?>//g' $file
done
echo 'all is ok.'
这样也可以去除版本信息
2
去除烦人的<?xml version="1.0" ?>以后发现还有一个问题
使用notepad++打开0001.xml
原来
新生成的0001.xml
为
Unix(LF)和Windows(CR LF)区别
通过查找资料得知Unix(LF)和Windows(CR LF)区别如下:
在一个平台上使用另一种换行符的文件可能会带来意想不到的问题, 特别是在编辑程序代码时,有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。
修改方法 下载
换行符批量转换工具
https://download.****.net/download/qq542731976/9958424
实现转换