使用python从目录中的多个XML文件中检索标记值

使用python从目录中的多个XML文件中检索标记值,python,Python,我目前正在学习python,以便在工作中自动化一些事情。我需要从目录中的多个xml文件中检索标记值。该目录也有许多子文件夹 我尝试了以下代码,并理解了缺少的内容。但我无法解决这个问题。这是我的密码: from xml.dom.minidom import parse, parseString import os def jarv(dir): for r,d,f in os.walk(dir): for files in f: if files.endswith(".xml

我目前正在学习python,以便在工作中自动化一些事情。我需要从目录中的多个xml文件中检索标记值。该目录也有许多子文件夹

我尝试了以下代码,并理解了缺少的内容。但我无法解决这个问题。这是我的密码:

from xml.dom.minidom import parse, parseString
import os
def jarv(dir):
for r,d,f in os.walk(dir):
    for files in f:
        if files.endswith(".xml"):
            print files
                dom=parse(files)
            name = dom.getElementsByTagName('rev')
            print name[0].firstChild.nodeValue
jarv("/path)
我知道在执行
dom=parse(files)
行时,它得到的文件名没有路径。所以它说没有这样的文件/目录


我不知道如何修复此问题。

您必须使用os.path.join()从目录名和文件名构建正确的路径:

dom=parse(os.path.join(r, files))

应该这样做

您必须使用os.path.join()从目录名和文件名构建正确的路径:

dom=parse(os.path.join(r, files))

应该这样做

如果您学习python,请毫不犹豫地使用
print
。调试非常有用。在行
dom=parse(files)
之前添加行
print files
,您将看到它包含的内容,谢谢。它真的很有用。它打印子文件夹中的所有xml文件。但是我一直在给parse关键字提供路径。我不知道语法。我只有一天的python语言。如果你学习python,请不要犹豫使用
print
。调试非常有用。在行
dom=parse(files)
之前添加行
print files
,您将看到它包含的内容,谢谢。它真的很有用。它打印子文件夹中的所有xml文件。但是我一直在给parse关键字提供路径。我不知道语法。我才一天大,用python。谢谢兄弟。我将行更改为“dom=parse(os.path.join(dir,files))”。现在它正在处理第一个文件夹中的文件,并再次抛出错误。它会为哪些文件抛出错误?您是否检查了打印的完整路径,文件是否确实不存在?现在抛出哪个错误?我有1个根文件夹和5个子文件夹。我有6个文件(1个在根目录中,1个在所有子文件夹中)。当我运行该命令时,它会为根目录中的文件提供正确的输出,并为下一个文件抛出错误。i、 e.第一个子文件夹中的文件。错误与以前相同。错误2,没有这样的文件/目录如果你在一个子文件夹中,你也必须把它带到路径中。您所指的r、d和f实际上是dirpath、dirname和文件名。您仍然可以使用os.path.join()为每个子文件夹构建正确的路径,不管您在树中有多深。为了获得一点学习经验,请打印forloop中的3个变量,看看它们是如何变化的。我也更新了我的问题。现在代码应该适用于你的所有文件。谢谢兄弟。我将行更改为“dom=parse(os.path.join(dir,files))”。现在它正在处理第一个文件夹中的文件,并再次抛出错误。它会为哪些文件抛出错误?您是否检查了打印的完整路径,文件是否确实不存在?现在抛出哪个错误?我有1个根文件夹和5个子文件夹。我有6个文件(1个在根目录中,1个在所有子文件夹中)。当我运行该命令时,它会为根目录中的文件提供正确的输出,并为下一个文件抛出错误。i、 e.第一个子文件夹中的文件。错误与以前相同。错误2,没有这样的文件/目录如果你在一个子文件夹中,你也必须把它带到路径中。您所指的r、d和f实际上是dirpath、dirname和文件名。您仍然可以使用os.path.join()为每个子文件夹构建正确的路径,不管您在树中有多深。为了获得一点学习经验,请打印forloop中的3个变量,看看它们是如何变化的。我也更新了我的问题。现在代码应该适用于所有文件。