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)