我试图编写一个程序来搜索嵌套目录,然后返回搜索文件的位置。为了将扫描内容嵌套在目录中,我在函数内部调用了该函数。我成功地做到了这一点,因为该程序可以正常工作,但是我想要的是在第一个匹配完成时停止搜索。代码如下。有人能让我理解为什么他的迭代不会停止。
search = sys.argv[2]
def find(loca,term):
count = 1
for file in os.listdir(loca):
if (count > 1):
break
try:
os.chdir(f'{loca}\{file}')
newloca = loca + '\\' + file
find(newloca,term)
except NotADirectoryError:
pass
except PermissionError:
pass
if(file == term):
print(file)
print(f"found the {term} at")
print(os.getcwd())
count += 1
find("E:/",search)
答案 0 :(得分:0)
由于您使用的是递归,因此您需要某种方式在找到匹配项时发信号通知父项。您可以为此使用return
。
def find(loca,term):
count = 1
for file in os.listdir(loca):
if (count > 1):
break
try:
os.chdir(f'{loca}\{file}')
newloca = loca + '\\' + file
if find(newloca,term):
return 1
except NotADirectoryError:
pass
except PermissionError:
pass
if(file == term):
print(file)
print(f"found the {term} at")
print(os.getcwd())
count += 1
return 1