Python实现从第三方API递归获取全层级子路径求助
递归获取全层级路径的函数修正方案
原代码存在的问题
- 未将当前传入的父路径加入结果集,导致最终结果缺失顶层路径
- 递归调用后的子路径未被收集,仅执行函数但未保存返回值
while循环逻辑错误,无意义的重复递归调用,存在死循环风险- 无数据时返回
None,合并数组时会引发类型错误
修正后的递归实现
def get_all_paths(path_name): # 结果数组先加入当前路径,保证层级完整 all_paths = [path_name] # 调用第三方API获取下一级子路径 child_paths = get_path_from_api(path=path_name) for path in child_paths: if path.is_directory: # 递归获取子路径的全层级路径,并合并到结果中 all_paths.extend(get_all_paths(path.name)) return all_paths
初始路径列表的处理
如果有初始路径列表(如['path1', 'path2']),可以通过以下方式合并所有结果:
initial_paths = ['path1', 'path2'] final = [] for path in initial_paths: final.extend(get_all_paths(path))
逻辑说明
- 每个路径首先将自身加入结果数组,确保父路径不会丢失
- 遍历API返回的子路径,仅对目录类型的路径进行递归处理
- 递归调用返回的子路径集合直接合并到当前结果数组中
- 无后代路径时,返回仅包含当前路径的数组,避免返回
None引发的异常
内容的提问来源于stack exchange,提问作者Shahroz Pervaz
相关产品推荐
相关产品推荐

