You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python递归文件搜索函数结果无法追加到列表、返回空列表问题求助

问题根因
  • 递归调用simple_search(folder_path, filename)时,没有接收子目录执行后返回的匹配结果,也没有将这部分结果合并到当前层级的found_files列表中。所有子目录下匹配到的文件路径仅会被打印,无法传递到最顶层函数的返回值中,如果你的测试用例中匹配文件全部位于子目录,顶层函数自然会返回空列表。
  • (可选优化问题)代码中两次调用os.walk(path)会重复遍历当前目录,增加不必要的IO开销;硬编码路径分隔符\\仅适配Windows系统,跨平台运行会出错。
修正后的代码
import os

def simple_search(path, filename) :
    found_files = []
    try:
        # 单次遍历即可同时获取当前目录下的文件夹、文件列表
        root, folders, files = next(os.walk(path))
        for i in files:
            if filename in i:
                full_path = os.path.join(path, i)
                print(full_path)
                found_files.append(full_path)
        for folder in folders:
                folder_path = os.path.join(path, folder)
                # 合并子目录的搜索结果到当前列表
                found_files.extend(simple_search(folder_path, filename))     
    except StopIteration:
        pass
    return found_files
修改说明

修改后递归调用返回的子目录匹配结果会通过extend方法追加到当前层级的结果列表中,所有层级匹配到的文件路径都会逐层汇总到最顶层函数的返回值,返回结果和print输出的内容完全一致。同时优化了目录遍历逻辑和路径拼接方式,代码兼容性和运行效率更高。

内容的提问来源于stack exchange,提问作者Pouya Abdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:42:00