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

使用os.listdir时如何获取子文件夹内的所有文件?

Python遍历目录下所有子目录文件的实现方法

os.listdir仅能返回目标目录的一级子元素,若需要递归获取所有层级子目录内的文件,可以用以下两种常用方案:

方案1:使用os.walk(兼容所有Python3版本)

os.walk会自动递归遍历所有子目录,每次迭代返回三个值:当前遍历的目录路径、当前目录下的子文件夹列表、当前目录下的文件列表,拼接路径即可得到完整的文件路径。
示例代码:

import os

def get_all_files(root_path):
    file_list = []
    for current_dir, _, files in os.walk(root_path):
        for file_name in files:
            # 拼接得到文件完整绝对路径
            full_file_path = os.path.join(current_dir, file_name)
            file_list.append(full_file_path)
    return file_list

# 调用测试
print(get_all_files("C:/Users/user/Desktop"))

如果只需要文件名不需要完整路径,直接把full_file_path替换成file_name即可,注意不同子目录下的同名文件会被重复返回。

方案2:使用pathlib(Python3.4及以上版本推荐)

pathlib是Python3.4新增的面向对象路径处理库,用递归glob方法可以非常简洁的实现需求:
示例代码:

from pathlib import Path

def get_all_files(root_path):
    # rglob("*") 表示递归匹配所有路径,is_file()过滤掉文件夹,只保留文件
    return [str(file) for file in Path(root_path).rglob("*") if file.is_file()]

# 调用测试
print(get_all_files("C:/Users/user/Desktop"))

如果需要过滤特定格式的文件,比如只获取所有txt文件,把rglob("*")改成rglob("*.txt")即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:00:04