Python“Walk”目录来处理xml

时间:2015-08-04 15:40:37

标签: python xml

我是关于python的新人,我编写了这个程序来处理os.walk()中的xml。 该程序可以打印"频道代码"来自不同的xml文件,它们都命名为" mmiap.xml"。

这是代码:

#coding=utf-8
import os
import  xml.dom.minidom


path = "H:\\Dev\\CODE\\MMwithwalk\\"

for root, dirs,files in os.walk(path):

    dom = xml.dom.minidom.parse('mmiap.xml')

    root = dom.documentElement

    bb = root.getElementsByTagName('channel')   #Get channel code from mmiap.xml

    b= bb[0]

    print (b.firstChild.data)

运行此程序后,它显示" FileNotFoundError:[Errno 2]没有这样的文件或目录:' mmiap.xml'"

出了什么问题?似乎遍历不是行走深度。但我找不到问题。

PS:如果我将mmiap.xml拖到根目录,通道代码将正常打印。

1 个答案:

答案 0 :(得分:0)

当你这样做时 -

dom = xml.dom.minidom.parse('mmiap.xml')

这将始终只检查正在运行脚本的当前目录内部,而不是在os.walk() 走过 /递归到的目录内。

您应首先检查mmiap.xml列表中是否有files,如果是,您应该使用os.path.join()加入rootfilename创建要解析的实际文件路径。示例 -

import os
import os.path
import  xml.dom.minidom

path = "H:\\Dev\\CODE\\MMwithwalk\\"

for root, dirs,files in os.walk(path):
    if 'mmiap.xml' in files:
        filePath = os.path.join(root,'mmiap.xml')
        dom = xml.dom.minidom.parse(filePath)
        root = dom.documentElement
        bb = root.getElementsByTagName('channel')   #Get channel code from mmiap.xml
        b= bb[0]
        print (b.firstChild.data)