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

递归获取文件夹及子目录下所有文件全路径(排除子文件夹路径)

实现方案

问题原因

你原有代码只提取了os.walk返回的第三个元素(当前目录下的文件名列表),没有和第一个元素(当前目录的完整路径)拼接,因此只能输出纯文件名。

实现1:基于os.walk的简洁实现

直接利用os.walk自带的递归能力,拼接路径即可:

import os

def get_all_filePATHs(folderPATH):
    file_paths = []
    for root, dirs, files in os.walk(folderPATH):
        for file in files:
            # 拼接当前目录路径和文件名,得到完整路径
            full_path = os.path.join(root, file)
            file_paths.append(full_path)
    return file_paths

folderPATH = r'C:\Users\Arman\Desktop\Cosmology\Articles'
print(get_all_filePATHs(folderPATH))

实现2:手动实现递归逻辑(自定义递归遍历)

如果你需要自己写递归逻辑不依赖os.walk的封装,可以用如下实现,支持任意层级嵌套:

import os

def get_all_filePATHs(folderPATH):
    file_paths = []
    # 遍历当前目录下的所有条目
    for entry in os.listdir(folderPATH):
        entry_full_path = os.path.join(folderPATH, entry)
        # 如果是文件,直接加入结果列表
        if os.path.isfile(entry_full_path):
            file_paths.append(entry_full_path)
        # 如果是目录,递归遍历该目录,将结果合并到当前列表
        elif os.path.isdir(entry_full_path):
            file_paths.extend(get_all_filePATHs(entry_full_path))
    return file_paths

folderPATH = r'C:\Users\Arman\Desktop\Cosmology\Articles'
print(get_all_filePATHs(folderPATH))

注意事项

  • 两种实现都只会返回文件的完整路径,不会返回子目录本身的路径
  • 路径拼接统一用os.path.join,可以自动适配Windows、Linux等不同操作系统的路径分隔符,兼容性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:57:02