在 Python 中递归返回路径
在 Python 中,您在尝试从递归函数返回路径时遇到了问题。相反,您在结果中获得 None。
提供的代码旨在遍历表示文件系统结构的字典,搜索 rqfile 指定的文件。如果找到该文件的路径,则应返回该文件的路径。
问题的根本原因是,在递归字典时,该函数在遇到非字典值时会尝试在 else 分支中返回 None 。这会提前终止函数,导致 None 被返回。
要纠正这个问题,您需要一致地返回递归调用的结果:
for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: # Remove unnecessary else block return get_path(directory[filename], rqfile, path)
此代码保证函数返回路径(如果找到)或递归调用的结果(如果当前路径不是您要查找的路径)。或者,您还可以处理当前路径中不存在 rqfile 的边缘情况:
for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: return None return get_path(directory[filename], rqfile, path)
通过实现这些解决方案中的任何一个,您的函数将正确返回请求文件的路径,如果是,则返回 None未找到。
以上是为什么我的递归 Python 函数在尝试查找路径时不返回任何内容?的详细内容。更多信息请关注PHP中文网其他相关文章!