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

Python类中使用glob读取多级子目录文件返回空列表问题求助

问题原因

get_folder方法的子目录路径拼接逻辑存在错误,返回的目录路径均为无效路径,后续get_file方法基于无效路径执行glob匹配,因此返回全空列表。
具体错误:遍历到datasets/Actor1这类一级子目录时,os.listdir(f)返回的是该目录下的emotion1、emotion2等二级子目录名,原代码错误地将这些目录名与根路径self.path拼接,得到的路径为datasets/emotion1(实际不存在),而非正确的datasets/Actor1/emotion1。你之前认为get_folder返回符合预期,属于输出示例的判断误差,真实运行返回的路径均缺失Actor层级。

修复方案

修改get_folder方法中的路径拼接逻辑即可,修改后的完整代码如下:

import glob
import os

class Folder:
    """Attempt to model typical folder."""

    def __init__(self, path):
        self.path = path

    def get_folder(self):
        files = glob.glob(os.path.join(self.path, "*"))
        dir_list = []

        for f in files:
            if os.path.isdir(f):
                # 将拼接根路径改为拼接当前遍历的一级子目录路径f
                dir_list = dir_list + [
                    os.path.join(f, elt) for elt in os.listdir(f) if os.path.isdir(os.path.join(f, elt))
                ]
        return dir_list

    def get_file(self):
        dir_list = self.get_folder()
        sf_list = []

        for line in dir_list:
            subfiles = glob.glob(os.path.join(line, "*.wav"))
            # 若需要扁平化的一维文件列表,将append改为extend即可
            sf_list.append(subfiles)

        return sf_list

额外优化说明:glob匹配时指定*.wav后缀可以过滤非音频文件,避免返回不需要的目录或其他格式文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:04