Python中的递归函数冗余检查文件夹

Python中的递归函数冗余检查文件夹,python,recursion,path,directory,os.walk,Python,Recursion,Path,Directory,Os.walk,我正在编写一个递归函数来搜索短目录结构。所发生的事情是,它正确地检查每个文件夹,但随后它会再次打开每个文件夹!我不知道它为什么会这样。有什么建议吗?注意:最初,dirs循环中的for dir位于底部,但我认为这可能有助于移动它。显然没有 def Parse_Directory_Tree(path,filetype,a,b): for(path,dirs,files) in os.walk(path): for dir in dirs: print(

我正在编写一个递归函数来搜索短目录结构。所发生的事情是,它正确地检查每个文件夹,但随后它会再次打开每个文件夹!我不知道它为什么会这样。有什么建议吗?注意:最初,dirs循环中的for dir位于底部,但我认为这可能有助于移动它。显然没有

def Parse_Directory_Tree(path,filetype,a,b):
    for(path,dirs,files) in os.walk(path):
        for dir in dirs:
            print("next dir:",path+dir)
            Parse_Directory_Tree((path + dir +'/'),filetype,a,b)

        if(len(files) == 1):
            file_nodes_mass = readfile((path+files[0]),filetype)
        else:
            for file in files:
                print("looking at file: ",file)
                if(filetype in file):
                    if(a in file):
                        file_nodes_mass = readfile((path+'/' +file),filetype)
                        continue
                    else:
                        print("not here")
                        continue
                else:
                    continue

编辑:我做了一个改变。在返回Parse_目录树之前,我将新路径分配给path。这有助于但不能完全缓解问题。

只需放弃实际的递归即可。遍历整个目录树。如果您确实坚持执行递归,请查看os.listdir,将单个目录与os.path.isdir和os.path.isfile一起非递归列出,以确定什么是文件夹,什么是文件。

os.walk为您执行递归。您不需要在递归本身中再次调用它。您可能还需要查看os.listdir以及os.path.isdir或os.path.ISFILE谢谢。我忙于做递归函数,以至于忘了当初为什么选择os.walk。我将此作为一个答案发布,如果它对您有帮助,请接受它,以便其他人可以从中学习。