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

人脸帧数据集分类整理求助:按文件名拆分真实/伪造图片至子文件夹

人脸数据集按real/fake分类的文件夹拆分方案

直接用下面的Python代码就能完成你的需求,同时规避常见的路径和文件夹创建问题:

import os
import shutil

# 数据集所在文件夹路径,脚本和数据集同目录则用当前路径,否则替换为绝对路径
dataset_dir = os.getcwd()

# 目标分类文件夹
target_categories = ['real', 'fake']

# 创建分类文件夹(已存在则跳过)
for category in target_categories:
    category_path = os.path.join(dataset_dir, category)
    os.makedirs(category_path, exist_ok=True)

# 遍历并移动文件
for filename in os.listdir(dataset_dir):
    file_path = os.path.join(dataset_dir, filename)
    # 跳过子文件夹和非jpg文件
    if os.path.isdir(file_path) or not filename.lower().endswith('.jpg'):
        continue
    
    # 提取文件的分类前缀
    file_category = filename.split('_')[0]
    if file_category in target_categories:
        # 构建目标路径并移动文件
        dst_path = os.path.join(dataset_dir, file_category, filename)
        shutil.move(file_path, dst_path)
        print(f"移动完成:{filename} → {file_category}/")

关键细节说明

  • 文件夹创建:用os.makedirs(..., exist_ok=True)替代os.mkdir,解决文件夹已存在时的报错问题,同时支持创建多级目录
  • 路径处理:全程用os.path.join拼接路径,自动适配Windows/macOS/Linux的路径分隔符,避免手动拼接导致的错误
  • 文件过滤:只处理.jpg格式文件,跳过子文件夹,防止误移动脚本或其他无关文件
  • 分类判断:通过split('_')[0]提取文件名前缀,完美匹配你的real_xxx.jpg/fake_xxx.jpg命名规则,比前缀匹配更准确

你之前可能踩的坑

  1. os.mkdir报错:如果目标文件夹已存在,os.mkdir会直接抛出异常,导致后续代码无法执行,换成os.makedirs即可解决
  2. 路径拼接错误:手动用+ '/'拼接路径在Windows下会失效,必须用os.path.join处理跨平台路径
  3. 未过滤非图片文件:如果文件夹里有脚本文件或其他格式文件,会干扰分类逻辑,添加文件格式过滤即可避免
  4. 分类判断逻辑问题:若用startswith('real')可能误匹配类似realistic_001.jpg的文件,用split('_')[0]更贴合你的命名规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:50