首页 > 解决方案 > 如何使用图像名称python分隔文件夹中的图像?

问题描述

我需要将文件夹中的图像与其在python中的文件名分开。例如,我有一个名为 0_source.jpg、0_main.jpg、0_cell.jpg、1_net.jpg、1_cells.jpg、2_image.jpg、2_name.jpg 的图像文件夹

我想将这些图像分开并保存在不同的文件夹中,例如:folder1:

0_source.jpg、0_main.jpg、0_cell.jpg

文件夹 2:

1_net.jpg、1_cells.jpg

文件夹 3:

2_image.jpg, 2_name.jpg

我试着环顾四周,但似乎没有一个适合我真正需要的。希望这里有人可以提供帮助。我愿意接受任何想法、建议和建议,谢谢。

标签: python

解决方案


主要思想是使用正则表达式从图像名称开始提取文件夹名称。然后构建文件夹并移动图像

import shutil
import re
import os

images = ["0_source.jpg", "0_main.jpg", "0_cell.jpg", "1_net.jpg", "1_cells.jpg", "2_image.jpg", "2_name.jpg"]

def build_images_folders(image_names: [str]):
    folder_name_regex = re.compile(r"^(\d)._*") # Regular expression which extract the folder starting from the image_name name

    for image_name in image_names:
        regex_match = folder_name_regex.match(image_name)
        if regex_match:
            folder_index = regex_match.group(1) # Extract the folder name
            folder_name = "{folder_prefix}{folder_index}".format(folder_prefix="folder_", folder_index=folder_index) # Build the folder name
            os.makedirs(folder_name, exist_ok=True) # Build the folder. If already exists, don't raise exception

            src_image_path = image_name
            dst_image_path = os.path.join(folder_name, image_name)
            shutil.move(src_image_path, dst_image_path)

        else:
            error = "Invalid image name format \"{image_name}\". Expecting <number>_<string>".format(image_name=image_name)
            raise ValueError(error)

if __name__ == '__main__':
    build_images_folders(images

推荐阅读