当前位置:   article > 正文

python脚本分享:xml文件批量修改_用python批量修改xml文件内容

用python批量修改xml文件内容

今天分享一个我自己写的实用脚本,主要是将.xml文件进行批量的修改

首先,声明我并不是很了解.xml的相关知识,所以今天主要是以我遇到的问题来做个记录。

想要更多的了解xml,请看最后的资料分享。

效果展示:

因为这些是属于我们项目小组的,我也不清楚是不是有什么不能公开的,我就截取了一小部分,原本是用lambelme来修改的,但由于xml文件似乎读不进去,所以只有手动修改,将water改为blue(重要的是一个一个用记事本打开,手动修改),这时候我的第一生产力产生了,because I am lazy。

这是下面的pyxml.py文件

  1. import os
  2. import os.path
  3. import xml.dom.minidom as md
  4. path = 'E:\\Deeplearning\\Road_Detect_Project\\road_surface_mark\\Annot\\'
  5. files = os.listdir(path) # 得到文件夹下所有文件名称
  6. def main():
  7. for xmlFile in files: # 遍历文件夹
  8. if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开
  9. dom = md.parse(os.path.join(path,xmlFile))
  10. root = dom.documentElement
  11. names = root.getElementsByTagName('name') #对某个标签进行修改
  12. # print(name[0].firstChild.data)
  13. for i in range(len(names)):
  14. print(names[i].firstChild.data)
  15. a=names[i].firstChild.data
  16. print(type(a))
  17. names[i].firstChild.data = "red"
  18. print(names[i].firstChild.data)
  19. with open(os.path.join(path,xmlFile), 'w') as fh:
  20. dom.writexml(fh)
  21. print('夏天是冰红茶的文件成功写入') #使用时,请不要删除这段
  22. if __name__ == '__main__':
  23. main()

 我说一下问题,因为小组的其他师兄有用中文路径,就会发生下面的情况:

但是记事本打开是正常的,也已经修改成功了。

我查了,是因为编码的问题,可以把XML文件的格式用记事本另存为ANSI就可以了(我不知道怎么另存为,可以看到记事本里面的编码格式是ANSI,所以我觉得这个方法是行得通的),还可以将第一行修改为

<?xml version="1.0" encoding="GBK"?>

这种我是成功了。(别建议我打马赛克)下次组会,我一定要提这个问题,以前因为路径中有中文吃了很多亏,所以我现在建工程都是尽量去用英文。

 

参考资料:

如何在Python中解析和修改XML?- 极客极客 (geeksforgeeks.org)

xml.dom.minidom (Structured Markup) - Python 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云 (tencent.com)

XML系列教程 (w3school.com.cn) 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/248701
推荐阅读
相关标签
  

闽ICP备14008679号