使用os.listdir()从LFW数据集读取图片只能从第一个文件夹读取图片

Using os.listdir() to read images from LFW dataset can only read images from the first file folder

LFW 数据集根据名称将图像放在不同的文件夹中。我想阅读并将所有图像移动到一个文件夹中。我使用带有 os.listdir() 函数的 for 循环来读取文件,但它只是 returns 来自 LFW 数据集中第一个文件夹的图像。

'''code is showing below the line'''

    import os
    from os.path import join as pjoin
    from skimage import io
    img_dir = 'new path'
    def load_data(data_dir): #dataset is the originalPath

        count = 0
        for guys in os.listdir(data_dir):
            print(guys)
            person_dir = pjoin(data_dir, guys)
            for i in os.listdir(person_dir):
                image_dir = pjoin(person_dir, i)
                img22 = io.imread(image_dir, mode='RGB')
                print(image_dir)
                io.imsave(pjoin(img_dir, i), img22)
                count = count+1
            print(person_dir)
            print(count)
            return count

    sourcepath = 'originalPath'
    load_data(sourcepath)

预期结果是 LFW 数据集所有文件夹中的所有图像都被读取到新路径(不在任何文件夹中,只有图像。) 代码运行没有错误,但计数实际上 returns '1' 我可以在新路径中看到,只有 1 张图像,它位于 LFW 数据集的第一个文件夹中。

一个明显的问题是您的 return 语句的缩进:

'''code is showing below the line'''

    import os
    from os.path import join as pjoin
    from skimage import io
    img_dir = 'new path'
    def load_data(data_dir): #dataset is the originalPath

        count = 0
        for guys in os.listdir(data_dir):
            print(guys)
            person_dir = pjoin(data_dir, guys)
            for i in os.listdir(person_dir):
                image_dir = pjoin(person_dir, i)
                img22 = io.imread(image_dir, mode='RGB')
                print(image_dir)
                io.imsave(pjoin(img_dir, i), img22)
                count = count+1
            print(person_dir)
        print(count)
        return count

    sourcepath = 'originalPath'
    load_data(sourcepath)

你能检查并确认它正在处理的第一个文件夹(伙计们)是否有多​​个图像。