rec2csv导出行之间有空行

时间:2012-04-02 23:05:58

标签: python matplotlib recarray

我正在尝试使用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超出范围),因为行之间有空行。

1 个答案:

答案 0 :(得分:1)

我猜这是因为你没有以二进制模式打开文件。 rec2csv使用内置csv模块,该模块希望在Windows上以'wb'模式打开文件。

一个简单的解决方案是只传入文件名,而不是手动打开和关闭文件。

所以要么:

mlab.rec2csv(r, 'J:\\export.csv')

或做:

with open('J:\\export.csv', 'wb') as outfile:
    mlab.rec2csv(r, outfile)