我正在尝试使用rec2csv将recarray导出到csv文件,以便稍后使用csv2rec检索它。问题是rec2csv导出每行之间有一个空行,因此csv2rec以后无法读取它。如何使用rec2csv函数修复此问题?
基本上,我要做的是:
ticker = 'GOOG'
startdate = datetime.date(2011,1,1)
enddate = datetime.date.today()
fh = finance.fetch_historical_yahoo(ticker, startdate, enddate)
r = mlab.csv2rec(fh); fh.close()
r.sort()
经过一些计算,
fl = open(r'J:\export.csv', 'w')
mlab.rec2csv(r,fl); fl.close()
然后我希望能够再次导入此文件:
ff = mlab.csv2rec('J:\\export.csv')
这会给出一条错误消息(IndexError:list index超出范围),因为行之间有空行。
答案 0 :(得分:1)
我猜这是因为你没有以二进制模式打开文件。 rec2csv
使用内置csv
模块,该模块希望在Windows上以'wb'
模式打开文件。
一个简单的解决方案是只传入文件名,而不是手动打开和关闭文件。
所以要么:
mlab.rec2csv(r, 'J:\\export.csv')
或做:
with open('J:\\export.csv', 'wb') as outfile:
mlab.rec2csv(r, outfile)