我正在搜索大型目录以将旧归档归类为特定顺序。我嵌入了一个递归调用的函数,当它找到一个文件路径匹配搜索条件的目录时,它将它添加到'found'字典fdict
。使用os.scandir停留在递归目录搜索中
预期的结果是,当在没有子目录的目录上调用该函数时,该函数完成时不执行任何操作并移回到一个级别。
运行时,它被卡在第一个目录中,它找不到子目录,只是递归调用当前目录进行搜索,陷入循环。
下面是代码摘要,任何洞察为什么它是循环将不胜感激。
def scan(queries, directory):
fdict = {}
def search(queries, directory, fdict):
for entry in os.scandir(directory):
if entry.is_dir():
for x in queries:
if str(x) in entry.path:
fdict[str(x)] = entry.path
print("{} found and dicted".format(str(x)))
else:
search(queries, entry.path, fdict)
else: pass
search(queries, directory, fdict)
return fdict
请确保你没有关注[符号链接](https://docs.python.org/3/library/os.html#os.DirEntry.is_symlink)吗? –