首页 > 解决方案 > Python 类中用于检索子子文件夹的问题

问题描述

我没有成功地尝试获取一个 Python 函数,它以 Class 的形式返回给定文件夹的子文件夹。

我的数据集文件夹的结构如下:

    datasets 
        Actor1,
            emotion1
            emotion2
        Actor2
            emotion1
            emotion2
# setting class

class Folder:
    """Attempt to model typical folder."""
    def __init__(self, path):
        self.path = path

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

        for dir_ in files:
            if os.path.isdir(dir_) == True:
                dir_list.append(dir_)
        return dir_list
        

我的问题是这样的:

Folder(path).get_folder()返回一个仅包含数据集目录中元素的列表

Out[8]: 
[..\\datasets\\Actor1',
 '..\\datasets\\Actor2']

但我需要的输出是:


['...\\datasets\\Actor1\\emotion1',
 '...\\datasets\\Actor1\\emotion2',
 '...\\datasets\\Actor2\\emotion2',
 '...\\datasets\\Actor2\\emotion2',]

你能帮忙吗?

标签: python

解决方案


尝试这个:

import os
import glob


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):
                dir_list = dir_list + [
                    os.path.join(self.path, elt) for elt in os.listdir(f)
                ]
        return dir_list


print(Folder(".").get_folder())

推荐阅读