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

时间:2014-08-13 18:00:48

标签: python recursion path directory os.walk

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

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_Directory_Tree之前,我分配了路径新路径。这有助于但不能完全解决问题。

1 个答案:

答案 0 :(得分:0)

删除实际的递归。 os.walk为您整理目录树。如果你真的坚持做递归,请检查os.listdir以列出单个目录(非递归)以及os.path.isdiros.path.isfile来确定什么是文件夹以及什么是文件。