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)

























你可能感兴趣的:(python,数据处理)