我正在尝试使用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:列表索引超出范围)。
最佳答案
我猜是因为您没有以二进制模式打开文件。 rec2csv
使用内置的csv
模块,该模块希望在Windows上以'wb'
模式打开文件。
一个简单的解决方案是只传递文件名,而不是手动打开和关闭文件。
所以要么做:
mlab.rec2csv(r, 'J:\\export.csv')
或执行:
with open('J:\\export.csv', 'wb') as outfile:
mlab.rec2csv(r, outfile)