1

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

当我尝试在 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”文件上运行一个函数,无论它嵌套多深。

4

2 回答 2

2

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

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

你可能没有。

你想做类似的事情

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)

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

于 2011-12-12T01:00:11.403 回答
1

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

于 2011-12-12T00:28:03.370 回答