图片分类的脚本

当前有个名为“image”的文件夹和名为“label”的txt文件,txt文件里的每一行包含了“photos”文件夹里每一个图片文件的文件名 + 一个空格 + 对应的标签(1、2....8),请编写一个脚本,并创建一个新的文件夹,里面包含8个文件夹(即每个图片对应的标签),然后将对应标签的图片复制粘贴到对应的文件夹下 

import os
import shutil

# Source and target folder details
source_folder = "./image"  # 假设图片存储在这个文件夹
label_file = "./label.txt"  # 标签文件的路径
target_folder = "./hospital_gradingData_afterSupplement_newName"  # 分类后的图片存储位置

# 如果目标文件夹不存在,则创建
if not os.path.exists(target_folder):
    os.mkdir(target_folder)

# 为每个标签创建子文件夹
for i in range(1, 9):
    label_subfolder = os.path.join(target_folder, str(i))
    if not os.path.exists(label_subfolder):
        os.mkdir(label_subfolder)

# 读取标签文件并对图片进行分类
with open(label_file, 'r', encoding='utf-8') as file:  # 指定编码为 'utf-8'
    for line in file:
        parts = line.strip().split()
        photo_name = ' '.join(parts[:-1])  # 文件名可能包含空格,因此合并除了最后一个部分之外的所有部分
        label = parts[-1]  # 标签是最后一个部分

        source_photo_path = os.path.join(source_folder, photo_name)
        target_photo_path = os.path.join(target_folder, label, photo_name)

        # 检查图片是否已经存在于目标文件夹中
        if not os.path.exists(target_photo_path):
            if os.path.exists(source_photo_path):
                # 将图片复制到相应标签的文件夹中
                shutil.copy2(source_photo_path, target_photo_path)
            else:
                # 打印缺失的图片信息
                print(f"缺失图片:{photo_name},应存放于文件夹:{label}")

你可能感兴趣的:(脚本)