数据集划分训练集和验证集脚本


'''
将数据集划分训练集和验证集
不仅限于划分.josn格式,可以为任意格式数据集 .glob()处修改
'''
import random
from pathlib import Path
import os
import shutil   #shutil.copy()的库,shutil相关函数处理文件

#glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作。
#‘*’ 匹配0个或多个字符,即json全部文件
pathes = Path("./box_labelmejson").glob("*.josn")

# pathes_list = [str(pth) for pth in pathes]  
#列表解析 生成列表。列表解析(list comprehension)提供了一种优雅的生成列表的方法,能用一行代码代替十几行代码的同时不损失任何可读性。而且,性能还快很多很多!
#str(pth)最后执行的
#下三行代码等同于上一行代码
pathes_list = []
for pth in pathes:
    pathes_list.append(pth)   

eval_data = random.sample(pathes_list,int(len(pathes_list)*0.2))    #比例划分2:8
train_data = [i for i in pathes_list if  i not in eval_data]


#os.makedirs(name, mode=0o777, exist_ok=False),一级目录以下创建目录
#os.mkdir()函数创建目录,(创建一级目录)

eval_pth = "./eval_pth"
os.makedirs(eval_pth,exist_ok= True)

train_pth = "./train_pth"
os.makedirs(train_pth,exist_ok= True)


for each_eval_pth in eval_data:         
    shutil.copy(str(each_eval_pth), eval_pth)
''' 
shutil.copy(source, destination)(这种复制形式使用的前提是必须要有 os.chdir(你要处理的路径))   source/destination 都是字符串形式的路劲,其中destination是:
1、可以是一个文件的名称,则将source文件复制为新名称的destination
2、可以是一个文件夹,则将source文件复制到destination中
3、若这个文件夹不存在,则将source目标文件内的内容复制到destination中
'''
for each_train_pth in train_data:
    shutil.copy(str(each_train_pth),train_pth)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值