我写了一个简单的功能来搜索电脑上的文件。它的工作,一切都很好,但我不能理解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")
1条答案
按热度按时间p4tfgftt1#
对于第1点:如果没有看到你所描述的代码,这是很难调试的。理论上它应该可以工作,但你如何实现它可能会有所不同。例如,当你在for循环中调用
find
时,你是如何处理name
变量的?关于第2点:因为你已经把它作为一个递归函数准备好了,所以只有找到
name
的函数示例实际上命中了返回函数。所有其他没有找到name
的示例直到它们用尽了for循环才完成。另外,您似乎正在编写可以使用
glob
模块更简单地完成的代码。请尝试阅读glob documentation,看看是否适合您。