如何依据标签拆分图片至对应文件夹?基于CSV文件的实现需求
按标签分类图片的实现方案
依赖准备
- 若未安装
pandas,执行命令安装:pip install pandas shutil是Python标准库,无需额外安装
核心代码实现
import pandas as pd import os import shutil # 配置参数,替换为你的实际路径和列名 CSV_FILE = "你的CSV文件路径.csv" # 替换成你的CSV文件位置 IMAGE_PATH_COL = "Image Path" # 替换成CSV中存储图片路径的列名 LABEL_COL = "Label" # 替换成CSV中存储标签的列名 TARGET_ROOT_DIR = "分类图片存放根目录" # 替换成你想存放分类结果的文件夹 # 读取CSV数据 df = pd.read_csv(CSV_FILE) # 遍历数据完成分类 for _, row in df.iterrows(): img_path = row[IMAGE_PATH_COL] label = row[LABEL_COL] # 跳过不存在的图片文件 if not os.path.isfile(img_path): print(f"跳过不存在的文件: {img_path}") continue # 创建标签专属文件夹(不存在则自动生成) label_folder = os.path.join(TARGET_ROOT_DIR, str(label)) os.makedirs(label_folder, exist_ok=True) # 生成目标路径 img_name = os.path.basename(img_path) target_path = os.path.join(label_folder, img_name) # 复制图片到目标文件夹(若要移动原图片,把copy2换成move) if not os.path.exists(target_path): shutil.copy2(img_path, target_path) print(f"已处理: {img_path} -> {target_path}") else: print(f"文件已存在,跳过: {target_path}")
关键注意事项
- 必须根据你的CSV实际列名修改
IMAGE_PATH_COL和LABEL_COL(比如列名是中文就换成对应中文) - 如果CSV里的图片路径是相对路径,要确保脚本运行时的工作目录能正确找到图片,或者直接把路径改成绝对路径
- 若需要移动原图片而非复制,将代码中的
shutil.copy2替换为shutil.move即可
内容的提问来源于stack exchange,提问作者Faa
相关产品推荐
相关产品推荐

