python-3.x 显示递归函数找到的文件的路径

jvlzgdj9  于 2023-04-22  发布在  Python
关注(0)|答案(1)|浏览(116)

我写了一个简单的功能来搜索电脑上的文件。它的工作,一切都很好,但我不能理解2点,告诉我,请。
1.现在我通过“name”单独输入文件名,但是如果我尝试添加name作为函数的必需参数之一(在path旁边)并在调用函数时指定它,那么由于某种原因,程序停止给出结果。
1.在return被触发后,函数应该停止工作,但由于某种原因,它继续旋转,即使在它已经找到正确的文件并且return已经工作后,它也会用一百万个文件填充列表。

import os

list1 = []
name = input()

def find(path, level=1):
    if name in os.listdir(path):
        return print(list1[-1])
    for i in os.listdir(path):
        if os.path.isdir(path+'\\'+i):
            list1.append(path + '\\' + i)
            find(path + '\\' + i, level + 1)

find("D:\\User")
p4tfgftt

p4tfgftt1#

对于第1点:如果没有看到你所描述的代码,这是很难调试的。理论上它应该可以工作,但你如何实现它可能会有所不同。例如,当你在for循环中调用find时,你是如何处理name变量的?
关于第2点:因为你已经把它作为一个递归函数准备好了,所以只有找到name的函数示例实际上命中了返回函数。所有其他没有找到name的示例直到它们用尽了for循环才完成。
另外,您似乎正在编写可以使用glob模块更简单地完成的代码。请尝试阅读glob documentation,看看是否适合您。

相关问题