我是关于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拖到根目录,通道代码将正常打印。
答案 0 :(得分:0)
当你这样做时 -
dom = xml.dom.minidom.parse('mmiap.xml')
这将始终只检查正在运行脚本的当前目录内部,而不是在os.walk()
走过 /递归到的目录内。
您应首先检查mmiap.xml
列表中是否有files
,如果是,您应该使用os.path.join()
加入root
和filename
创建要解析的实际文件路径。示例 -
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)