我正在尝试使用自制路径导航功能 - 基本上我需要浏览一个文件夹,并浏览其中的每个文件夹,在每个文件夹中运行一个函数。
当我尝试在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,无论它嵌套的程度如何。
答案 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
会更好。见那里的例子。