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

时间:2011-12-12 00:19:48

标签: python chdir

我正在尝试使用自制路径导航功能 - 基本上我需要浏览一个文件夹,并浏览其中的每个文件夹,在每个文件夹中运行一个函数。

当我尝试在for循环中更改目录时出现问题。我有这个“findDirectories”功能:

def findDirectories(list):
    for files in os.listdir("."):
        print (files)
        list.append(files)
        os.chdir("y")

最后一行会导致问题。如果我删除它,该函数只编译包含该文件夹中所有文件夹的列表。不幸的是,这意味着我每次下载文件夹时都要运行它,我不能只运行一次。我已将文件夹“y”指定为真正的文件夹,但即使这样,程序也会在打开时崩溃。在for循环之外执行os.chdir(“y”)完全没有问题。

我是Python的新手,但不是一般的编程。我怎样才能让它发挥作用,或者有更好的方法吗?我需要的最终结果是在该文件夹中存在的每个“* Response.xml”文件上运行一个Function,无论它嵌套的程度如何。

2 个答案:

答案 0 :(得分:2)

好吧,你没有发布实际错误的回溯,但显然它不起作用,因为你已指定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)

这是未经测试的,但你有这个想法......

答案 1 :(得分:1)

正如丹所说,os.walk会更好。见那里的例子。