функция не может вернуть правильное значение - PullRequest
0 голосов
/ 09 июля 2019

Я определяю функцию для рекурсивного поиска файла, НО странно, что он не может вернуть путь к файлу.

Сначала я определяю функцию

import os
def searchFile(target,root):
    items = os.listdir(root)
    for item in items:
        path = os.path.join(root,item)
        if os.path.isdir(path):
            #print(path)
            searchFile(target,path)
        elif os.path.isfile(path):
            #print(path)
            if os.path.basename(path) == target:
                print('if have already executed!!! ')
                print(path)
                print(target)
                return path

Функция ведет себя следующим образом

Случай 1:

Когда я использую эту функцию для поиска file_1в текущем пути "." функция возвращает полный путь к файлу_1

return_value = searchFile(target='file_1',root='.')
print(return_value)   #  ./file_1

Случай 2:

Когда я использую эту функцию для поиска файла_1 в каталоге "./result_new"Например, функция возвращает" Нет "

return_value = searchFile(target = 'file_1',root='.')
print(return_value) # None

Я ожидаю, что эта функция должна возвращать путь к файлу.

1 Ответ

0 голосов
/ 09 июля 2019

Попробуйте заменить First If Block :

   if os.path.isdir(path):
        #print(path)
        path_file = searchFile(target,path)
        if path_file is not None:
            return path_file

Примечание : это потому, что вы не обрабатываете вывод многоуровневых рекурсивных вызовов.

Код ссылки: https://ideone.com/D2LlEr

Примечание-1 : будет возвращен путь к первому найденному файлу.

...