在训练CNN或是其他的深度学习网络时,经常要做的一件事便是准备数据,这是一件比较“烦人”的事情,此处以Python为基础整理几个经常能用到的数据处理脚本以及需要注意的地方。
Python遍历指定目录下的所有文件
利用Python脚本遍历指定目标下的文件
@requires_authorization
"""
注意:从os.listdir中读取的文件名list是无序的,利用sort方法可以使其
按照str.lower的方式进行排序
此外还有几种常用的关于os的操作
os.remove(path)
os.rename(src,dst)
"""
import os
rootDir="/home/xcz/data/"
Lists=os.listdir(rootDir)
Lists.sort(key=str.lower)
for lists in Lists:
path=os.path.join(rootDir,lists)
利用Python脚本读取txt文件中的标注信息
@requires_authorization
"""
在读取到以下代码中的line信息后,经常用到的方法有以下几个
line=line.split(",") 一“,”分割获得一个list
line[0]=line[0].replace(";","") 去掉line[0]中的分号,
注意去掉不易发现的'\n'
"""
filename="/home/xcz/data/1.txt"
f=open(filename)
for line in f.readlines():
line=line.split("")
利用Python脚本随机分训练集与测试集
@requires_authorization
"""
代码从另一篇博客上获得后略加修改得到,此处用以保存而已
"""
import os
import sys
import random
start = int(0)
end = int(15573)
test = int(1500)
allNum = end-start+1
b_list = range(start,end)
blist_webId = random.sample(b_list, test)
blist_webId = sorted(blist_webId)
allFile = []
testFile = open('/home/xcz/data/VOCdevkit/VOC2007/ImageSets/Main/test.txt', 'w')
trainFile = open('/home/xcz/data/VOCdevkit/VOC2007/ImageSets/Main/trainval.txt', 'w')
for i in range(allNum):
allFile.append(i+1)
for test in blist_webId:
allFile.remove(test)
test2=""
if(test<10):
test2=test2+"00000"+str(test)
elif test<100:
test2=test2+"0000"+str(test)
elif test<1000:
test2=test2+"000"+str(test)
elif test<10000:
test2=test2+"00"+str(test)
else:
test2=test2+"0"+str(test)
testFile.write(test2 + '\n')
for train in allFile:
train2=""
if(train<10):
train2=train2+"00000"+str(train)
elif train<100:
train2=train2+"0000"+str(train)
elif train<1000:
train2=train2+"000"+str(train)
elif train<10000:
train2=train2+"00"+str(train)
else:
train2=train2+"0"+str(train)
trainFile.write(str(train2) + '\n')
testFile.close()
trainFile.close()