我正在尝试使用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)

10-06 07:13