函数无法返回正确的值

时间:2019-07-09 06:34:39

标签: python-3.x function recursion return

我正在定义用于递归查找文件的函数,但是很奇怪它无法返回文件的路径。

首先,我定义一个函数

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时,该函数将完整路径返回给file_1

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

情况2:

例如,当我使用此函数在目录“ ./result_new”中找到file_1时,该函数将返回“ None”

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

我希望这个函数应该返回文件的路径。

1 个答案:

答案 0 :(得分:0)

尝试替换第一个如果阻止

   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

Note-1 :它将返回找到的第一个文件的路径。