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

如何用Python将训练数据集10%文件迁移至验证集并自动建目录

Python实现数据集拆分:将training集10%文件迁移至validation集

核心思路

  • 遍历Dataset/training下的所有类别子目录
  • 对每个类别中的文件随机筛选出10%
  • 在Dataset/validation下自动创建对应的类别目录
  • 将筛选出的文件移动到目标目录

实现代码

import os
import random
import shutil
from pathlib import Path

# 基础路径配置
base_dir = Path("Dataset")
train_dir = base_dir / "training"
val_dir = base_dir / "validation"

# 设置随机种子,保证拆分结果可复现
random.seed(42)

# 遍历training下的所有类别文件夹
for class_name in os.listdir(train_dir):
    class_train_path = train_dir / class_name
    # 跳过非目录文件
    if not class_train_path.is_dir():
        continue
    
    # 创建validation下对应的类别目录
    class_val_path = val_dir / class_name
    os.makedirs(class_val_path, exist_ok=True)
    
    # 获取当前类别下的所有文件
    all_files = [f for f in os.listdir(class_train_path) if os.path.isfile(class_train_path / f)]
    # 计算要迁移的文件数量(10%)
    num_to_move = int(len(all_files) * 0.1)
    # 随机挑选文件
    files_to_move = random.sample(all_files, num_to_move)
    
    # 移动选中的文件
    for file_name in files_to_move:
        src = class_train_path / file_name
        dst = class_val_path / file_name
        shutil.move(src, dst)

print("数据集拆分完成!")

关键说明

  • 使用exist_ok=True确保创建目录时不会因为已存在而报错
  • 设置random.seed(42)可以让每次拆分的结果一致,方便调试和复现
  • 用shutil.move()完成文件迁移,会直接将文件从原目录移除到目标目录
  • 代码会自动跳过training目录下的非文件夹内容,避免处理错误文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:39:39