Python中的递归函数冗余检查文件夹
我正在编写一个递归函数来搜索短目录结构。所发生的事情是,它正确地检查每个文件夹,但随后它会再次打开每个文件夹!我不知道它为什么会这样。有什么建议吗?注意:最初,dirs循环中的for dir位于底部,但我认为这可能有助于移动它。显然没有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(
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。我将此作为一个答案发布,如果它对您有帮助,请接受它,以便其他人可以从中学习。