You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python根据CSV指定图片列表从源目录迁移对应文件到目标目录

解决方案

你只需要在移动环节增加过滤逻辑,直接遍历你从CSV提取到的目标图片列表做移动即可,调整后的代码如下:

单类别处理代码

import csv
import shutil
import os
from collections import defaultdict

# 提取CSV中的目标图片列表
columns = defaultdict(list)
with open('class0.csv') as f:
    reader = csv.DictReader(f)
    for row in reader:
        for k, v in row.items():
            columns[k].append(v)
# 转换为集合提升后续查找效率,适合大数据集场景
target_image_set = set(columns['images'])

source_dir = '/images'
target_dir = 'class0'

# 自动创建目标文件夹,避免路径不存在报错
os.makedirs(target_dir, exist_ok=True)

# 仅遍历目标图片列表做移动
for img_name in target_image_set:
    src_full_path = os.path.join(source_dir, img_name)
    # 增加存在性校验,避免文件不存在时报错中断
    if os.path.isfile(src_full_path):
        shutil.move(src_full_path, os.path.join(target_dir, img_name))
    else:
        print(f"未找到对应图片:{img_name}")

核心改动说明

  • 不再遍历源目录下所有文件,直接遍历CSV提取的目标图片列表,不会误移动其他文件
  • 将图片列表转为set类型,查找效率远高于列表,数据集规模大的时候性能优势明显
  • 新增目标文件夹自动创建逻辑,无需手动提前建文件夹
  • 新增源文件存在性校验,漏图时仅打印提示不会中断运行

多类别批量处理优化版本

如果要同时处理3个类别的CSV文件,可以直接用以下循环版本,无需重复写代码:

import csv
import shutil
import os
from collections import defaultdict

source_dir = '/images'
# 按你的实际文件配置修改即可
class_mapping = [
    ("class0.csv", "class0"),
    ("class1.csv", "class1"),
    ("class2.csv", "class2")
]

for csv_path, target_dir in class_mapping:
    columns = defaultdict(list)
    with open(csv_path) as f:
        reader = csv.DictReader(f)
        for row in reader:
            for k, v in row.items():
                columns[k].append(v)
    target_image_set = set(columns['images'])
    os.makedirs(target_dir, exist_ok=True)
    
    for img_name in target_image_set:
        src_full_path = os.path.join(source_dir, img_name)
        if os.path.isfile(src_full_path):
            shutil.move(src_full_path, os.path.join(target_dir, img_name))
        else:
            print(f"{csv_path} 中缺失对应图片:{img_name}")

内容的提问来源于stack exchange,提问作者fufu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:39:01