我想知道循环为什么不会在这里停止

时间:2019-03-24 17:18:07

标签: python python-3.x

我试图编写一个程序来搜索嵌套目录,然后返回搜索文件的位置。为了将扫描内容嵌套在目录中,我在函数内部调用了该函数。我成功地做到了这一点,因为该程序可以正常工作,但是我想要的是在第一个匹配完成时停止搜索。代码如下。有人能让我理解为什么他的迭代不会停止。

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)

1 个答案:

答案 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