Python:os.chdir()在for循环中不工作?

Python:os.chdir()在for循环中不工作?,python,chdir,Python,Chdir,我试图让一个自制的路径导航功能正常工作——基本上我需要浏览一个文件夹,浏览其中的每个文件夹,在每个文件夹中运行一个功能 当我试图更改for循环中的目录时,遇到了一个问题。我有一个“FindDirectory”函数: def findDirectories(list): for files in os.listdir("."): print (files) list.append(files) os.chdir("y") 最后一行导致了问题

我试图让一个自制的路径导航功能正常工作——基本上我需要浏览一个文件夹,浏览其中的每个文件夹,在每个文件夹中运行一个功能

当我试图更改for循环中的目录时,遇到了一个问题。我有一个“FindDirectory”函数:

def findDirectories(list):
    for files in os.listdir("."):
        print (files)
        list.append(files)
        os.chdir("y")
最后一行导致了问题。如果我删除它,该函数只编译一个包含该文件夹中所有文件夹的列表。不幸的是,这意味着每次我进入一个文件夹时都要运行这个程序,我不能只运行一次整个程序。我已经将文件夹“y”指定为一个真实的文件夹,但即使打开该文件夹,程序也会崩溃。在for循环之外执行os.chdir(“y”)完全没有问题


我对Python不熟悉,但对一般编程不熟悉。我怎样才能让它工作,或者有更好的方法吗?我需要的最终结果是在这个文件夹中存在的每个“*Response.xml”文件上运行一个函数,不管它嵌套得有多深。

正如Dan所说,这样会更好。请参见此处的示例。

好吧,您没有发布实际错误的回溯,但显然它不起作用,因为您已将
y
指定为相对路径

因此,它可以在循环的第一次迭代中更改为
y
,但在第二次迭代中,它将尝试更改为
y
子目录,该子目录也称为
y

你可能没有

你想做点什么

import os

for dirName, subDirs, fileNames in os.walk(rootPath):
    # its not clear which files you want, I assume anything that ends with Response.xml?
    for f in fileNames:
        if f.endswith("Response.xml"):
            # this is the path you will want to use
            filePath = os.path.join(dirName, f)

            # now do something with it!
            doSomethingWithFilePath(filePath)

这是未经测试的,但您有一个想法…

为什么不使用
os.walk
os.path.walk
?您所说的“程序崩溃”是什么意思?可能你收到了一些错误信息?你到底想做什么?正如在一个答案中提到的,正如你所承认的,每次都改为“y”是行不通的。我只是用“y”作为例子,因为这肯定会奏效。我并不是假设每个文件夹都称为“y”,而是使用类似os.chdir(files)的东西。我来看看os.walk,谢谢。