python删除文件夹下所有xml文件中重复的词条

来源:互联网 发布:mysql怎么自动同步 编辑:程序博客网 时间:2024/04/30 15:39

本文中的代码实现删除一个文件夹下所有的xml文件中的重复词条(重复词条指同一个xml中的)。

例如有下列目录结构(上传不了图片):

 res:(目录)

     value:(子目录)

          string.xml

    valus-es:(子目录)

          string.xml

要删除子目录下string.xml中的重复词条,就可以使用下面的代码,将代码保存为.py文件放在res下。

进入res目录运行.py文件即可。

#!/usr/bin/python# -*- coding: UTF-8 -*-from xml.dom.minidom import parsefrom xml.dom.minidom import Documentimport xml.dom.minidomimport xml.dom.minidom as Domimport osimport os.pathimport codecsimport globpath = os.path.abspath('.')print pathdirNames = [x for x in os.listdir('.') if os.path.isdir(x)]#当前目录下的所有文件夹for name in dirNames:    if "value" in name:#文件夹名中含value        print path+"\\"+name#打印文件夹名        newPath=path+"\\"+name        files=glob.glob(newPath+"\*.xml")#找出所有含value文件夹中的xml文件        for file in files:#对xml文件中重复的词条进行删除            print file            newFile=(os.path.basename(file).split("."))[0]+".xml"            newfile2= file#newPath + "\\" + newFile            print "newfile2: %s" % newfile2            DOMTree=xml.dom.minidom.parse(file)            Collection=DOMTree.documentElement            strs=Collection.getElementsByTagName("string")            i=0            a=len(strs)            for str in strs:                j=i                for str1 in strs:                    strName=str.getAttribute("name")                    strContext=str.childNodes[0].data                    str1Name=strs[j+1].getAttribute("name")                    str1Context=strs[j+1].childNodes[0].data                    j=j+1                    if (strName==str1Name) and (strContext==str1Context):#有重复生成新文件                        #Collection.removeChild(strs[j+1])                        Collection.removeChild(str)                        f = codecs.open(newfile2,'w','utf-8')                        DOMTree.writexml(f,encoding = 'utf-8')#不需要单独在设置格式                        f.close()                        #print strName                    if j==(a-1):                        break                i=i+1                if i==(a-1):                   break
运行效果参见老司机


原创粉丝点击