我正在定义用于递归查找文件的函数,但是很奇怪它无法返回文件的路径。
首先,我定义一个函数
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
我希望这个函数应该返回文件的路径。
答案 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 :它将返回找到的第一个文件的路径。