Рекурсивная функция в Python с избыточной проверкой папок

Я пишу рекурсивную функцию для поиска по короткой структуре каталогов. То, что происходит, - то, что это проверяет каждую папку правильно, но затем это открывает каждую папку СНОВА! Я не уверен, почему это так. Какие-либо предложения? (примечание: изначально цикл 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 ответ

Решение

Просто отбросьте рекурсию. os.walk проходит через все дерево каталогов для вас. Если вы действительно настаиваете на проведении рекурсии, проверьте os.listdir перечислить один каталог (не рекурсивно) вместе с os.path.isdir а также os.path.isfile определить, что такое папка и что такое файл.

Другие вопросы по тегам