当前有个名为“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}")