根据文件名将图像数据集从单个文件夹复制并粘贴到子文件夹

时间:2018-10-11 05:31:59

标签: python

我目前有一个包含x号的文件夹。 .JPEG图像。图像文件名按特定顺序:label_randomNo._randomString.JPEG。 使用自定义的Python函数,我希望能够根据文件名中提到的“标签”在子文件夹中复制/粘贴图像(在本地计算机中)。

例如:如果文件名具有car_23_a23d.JPEG,则该函数应创建一个名为car的文件夹,然后将该图像从源文件夹复制粘贴到子文件夹中。这需要根据文件名中的标签对源文件夹中的所有图像进行。显然,当它循环运行时,例如(如果)已经创建了一个汽车子文件夹,它应该只在其中复制/粘贴图像,而不创建另一个名为汽车的子文件夹。

然后我的目标是采用这种有组织的文件夹结构,并使用ImageDataGenerator.flow_from_directory将其加载为CNN模型的原始数据集。 谢谢!

关于, 阿比。

1 个答案:

答案 0 :(得分:1)

使用shutil将文件从一个源文件夹复制到目标文件夹。 mypath是存储所有文件的文件夹。然后,我们使用os.listdir()来获取目录中的所有内容。用“ _”分隔文件名,并使用第0个索引创建新目录。 首先,我们检查路径中是否已经存在hte目录。如果没有,则创建一个新目录并复制映像。否则,只需复制映像即可,而不是创建新目录。

import os, shutil
from os import listdir

def start():
    mypath = "source/"
    for files in listdir(mypath):
        directory = (files.split('_'))[0]
        if not os.path.exists(directory):
            os.makedirs(directory)
            shutil.copy("source/" + files, (directory))
        else:
            shutil.copy("source/" + files, (directory))