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

Python os.walk遍历目录如何输出匹配文件夹的列表而非逐行打印

需求说明

需要筛选目标目录下名称包含fg-的子文件夹,最终输出标准Python列表格式,而非逐行打印单个文件夹名称。
目标目录/home/test_directory结构如下:

/home/test_directory
    fg-2022-07-12
    fg-2022-07-11
    ag-2022-07-12

原有实现代码逻辑为遍历目录,匹配到符合规则的文件夹后逐行打印,代码如下:

import os
SRC = '/home/test_directory'

for root_dir_path, sub_dirs, files in os.walk(SRC):
    for folders in sub_dirs:
        if "fg-" in folders:
            print(folders)

该代码运行后逐行输出结果:

fg-2022-07-08
fg-2022-07-07

期望得到的标准列表格式输出:

['fg-2022-07-08', 'fg-2022-07-07']
实现方法

优先选择遍历过程中直接生成列表的方案,逻辑更简洁,不需要做额外的打印结果转换:

方案1:直接收集匹配结果生成列表(推荐)

初始化空列表存储匹配到的文件夹名,遍历过程中把符合条件的文件夹名追加到列表中,遍历完成后直接打印列表即可得到标准格式输出。

import os
SRC = '/home/test_directory'
fg_folders = []

for root_dir_path, sub_dirs, files in os.walk(SRC):
    for folder in sub_dirs:
        if "fg-" in folder:
            fg_folders.append(folder)

print(fg_folders)

运行后输出结果:

['fg-2022-07-08', 'fg-2022-07-07']

补充提示:os.walk默认会递归遍历目标路径下所有层级的子目录,如果你只需要筛选/home/test_directory下的一级子文件夹、不需要检索深层目录,可以在第一层for循环处理完sub_dirs后添加break终止递归,避免把深层目录中符合命名规则的文件夹也收集到结果里。

方案2:逐行输出结果转列表(备选)

如果你已经拿到了逐行打印的字符串结果,也可以通过字符串分割的方式转成列表,该方案需要额外处理打印内容,不如方案1直接,仅做备选参考:

# 逐行打印得到的原始字符串
print_result = """fg-2022-07-08
fg-2022-07-07
"""
fg_list = [item for item in print_result.split('\n') if item.strip()]
print(fg_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:39:17