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

如何基于CSV文件条件用Python创建子目录并分类移动JPG图片

基于Python按CSV条件分类移动JPG图片的实现方法

前置说明

你当前的环境结构如下:

  • 根目录
    • File1.jpg
    • File2.jpg
    • File3.jpg
    • File4.jpg
    • 记录文件对应关系的CSV文件(假设文件名为file_map.csv)

CSV文件结构:

Filenamescond
File1.jpg1
File2.jpg0
File3.jpg1
File4.jpg0

需要实现的效果是根目录下生成Subdir1、Subdir0两个子目录,对应存放cond为1和0的图片。

实现步骤

依赖说明

只需要Python自带的标准库即可,无需安装第三方依赖。

完整可运行代码

把代码放在根目录运行即可,注意替换代码里的CSV文件名为你实际的文件名:

import os
import shutil
import csv

# 配置参数
root_dir = os.getcwd()  # 默认为当前脚本所在的根目录,可手动替换为实际根目录绝对路径
csv_path = os.path.join(root_dir, "file_map.csv")  # 替换为你的CSV实际文件名
subdir_1 = os.path.join(root_dir, "Subdir1")
subdir_0 = os.path.join(root_dir, "Subdir0")

# 1. 创建两个子目录,已存在的话不会重复创建报错
os.makedirs(subdir_1, exist_ok=True)
os.makedirs(subdir_0, exist_ok=True)

# 2. 读取CSV映射关系并移动文件
with open(csv_path, mode='r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        filename = row['Filenames'].strip()
        cond = row['cond'].strip()
        src_path = os.path.join(root_dir, filename)
        # 确认源文件存在再执行移动操作
        if os.path.exists(src_path):
            if cond == '1':
                dst_path = os.path.join(subdir_1, filename)
            else:
                dst_path = os.path.join(subdir_0, filename)
            shutil.move(src_path, dst_path)
        else:
            print(f"警告:未找到文件 {filename},已跳过")

注意事项

  • 如果你的CSV文件是GBK编码,把open方法里的encoding='utf-8'改成encoding='gbk'即可
  • 代码加了源文件存在性校验,不会因为CSV里写了不存在的文件名中断运行
  • 重复运行代码不会重复创建目录,已经移动走的文件会触发不存在警告,不影响正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:57:00