python-按比例将子文件划分为train data和test data

python-按比例将子文件划分为train data和test data

程序目的:
将data划分为测试集和训练集:
 原始数据存放位置:./data/danzi/
测试集位置:./data/danzi-test/
训练集数据存放位置:./data/danzi-train/
按照0.7:0.3划分测试集和训练集

程序步骤:
1.读取所有data
2.打乱数据
3.对数据进行切片
4.创建新的子文件夹
5.转移切分好的数据到新文件夹

1.读取所有data函数
# 遍历指定目录,显示目录下的所有文件名
def eachFile(filepath):
    pathDir =  os.listdir(filepath)
    child_file_name=[]
    full_child_file_list = []
    for allDir in pathDir:
        allDir =unicode(allDir, 'utf-8')   
        child = os.path.join('%s%s' % (filepath, allDir))
        #print child.decode('gbk') # .decode('gbk')是解决中文显示乱码问题
        full_child_file_list.append(child)
        child_file_name.append(allDir)
    return  full_child_file_list,child_file_name
 2.判断文件夹是否存在,不存在创建新的文件夹
def mkdir(path):     #判断是否存在指定文件夹,不存在则创建
    # 引入模块
    import os

    # 去除首位空格
    path = path.strip()
    # 去除尾部 \ 符号
    path = path.rstrip("\\")

    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(path)

    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)

        print path
        print  ' 创建成功'
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print path
        print  ' 目录已存在'
        return False
 3.完整代码
#-*- coding: UTF-8 -*-
import os
import  random
import shutil
import PIL.Image as Image
def mkdir(path):     #判断是否存在指定文件夹,不存在则创建
    # 引入模块
    import os
    # 去除首位空格
    path = path.strip()
    # 去除尾部 \ 符号
    path = path.rstrip("\\")
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(path)

    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)

        print path
        print  ' 创建成功'
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print path
        print  ' 目录已存在'
        return False

# 遍历指定目录,显示目录下的所有文件名
def eachFile(filepath):
    pathDir =  os.listdir(filepath)
    child_file_name=[]
    full_child_file_list = []
    for allDir in pathDir:
        allDir =unicode(allDir, 'utf-8')
        child = os.path.join('%s%s' % (filepath, allDir))
        #print child.decode('gbk') # .decode('gbk')是解决中文显示乱码问题
        full_child_file_list.append(child)
        child_file_name.append(allDir)
    return  full_child_file_list,child_file_name

def eachFile1(filepath):
    dir_list = []
    name_list = []
    pathDir =  os.listdir(filepath)
    for allDir in pathDir:
        name_list.append(allDir)
        child = os.path.join('%s%s' % (filepath+'/', allDir))
        dir_list.append(child)
    return  dir_list,name_list



if __name__ == '__main__':
    filePath,danzi_list = eachFile("/home/lqy/project/OCR/ocr_cnn_lstm_ctc/ocr_cnn_lstm_ctc/data/danzi/")
    for i in danzi_list:
        path  = '/home/lqy/project/OCR/ocr_cnn_lstm_ctc/ocr_cnn_lstm_ctc/data/danzi-train/' +i
        mkdir(path)
        path = '/home/lqy/project/OCR/ocr_cnn_lstm_ctc/ocr_cnn_lstm_ctc/data/danzi-test/' + i
        mkdir(path)

    train_pic_dir=[]
    test_pic_dir=[]
    for i in filePath:
        pic_dir,pic_name=eachFile1(i)
        random.shuffle(pic_dir)
        train_list=pic_dir[0:int(0.7*len(pic_dir))]
        test_list=pic_dir[int(0.7*len(pic_dir)):]
        for j in train_list:   
            fromImage = Image.open(j)
            j=j.replace('danzi','danzi-train')
            fromImage.save(j)
        for k in test_list:
            fromImage = Image.open(k)
            k=k.replace('danzi','danzi-test')
            fromImage.save(k)

























评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值