所要完成的任务是,将之前处理过的几类数据的文件夹中的.dat文件中的数据读入到Excel中,方便导入Matlab。
- 因为需要对同一Excel反复操作,默认为对已存在的Excel进行操作,由于没有现成的对已存在Excel进行读写;操作用到了xlrd模块和xlutils,首先将已存在的Excel读入为rdx,然后使用使用xlutils中的copy将其复制为wtx,对于wtx就可以进行写入操作了,最后将wtx保存至原路径excel中。
- 对于目录的遍历使用os.walk,在读取文件夹所有文件同时还能获取父目录等信息。
import os
import xlrd
from xlutils.copy import copy
def readdir(rootdir):
excel = r'...\mix.xls'
try:
rdx = xlrd.open_workbook(excel, formatting_info=True) #打开Excel,并保留原格式
except:
print "no excel in %s " % excel
wtx = copy(rdx) #复制为可读写的wtx
sheet = wtx.get_sheet(0)
i = 0
for parent, dirnames, filenames in os.walk(rootdir):
print parent #查看文件的父目录
for filename in filenames: #将文件夹下所有文件写入Excel,每个文件
j = 0 #为一行,文件中每一行占一个单元格
abspath = os.path.join(parent, filename)
f = open(abspath, 'r')
for lines in f.readlines():
sheet.write(i, j, lines)
j += 1
i += 1
print("write new information successfully")
wtx.save(excel)
print ("save the information successfully!")
功能实现后,发现Matlab无法导入Excel为矩阵,而只能保存为元胞数组,原因在于lines为字符型,保存至Excel中也为字符型。于是将其强制转换为float型,最终成功导入至Matlab中。
lines=float(lines.strip('\n'))