rec2csv экспорт с пустой строкой между строками - PullRequest
1 голос
/ 03 апреля 2012

Я пытаюсь экспортировать a recarray в файл csv с помощью rec2csv, чтобы я мог получить его позже с помощью 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: список индексов вне диапазона), потому что между строками есть пустые строки.

1 Ответ

1 голос
/ 05 апреля 2012

Я предполагаю, что это потому, что вы не открываете файл в двоичном режиме.rec2csv использует встроенный модуль csv, который ожидает, что файл будет открыт в режиме 'wb' в Windows.

Простое решение - просто передать имя файла вместо открытия и закрытия файлавручную.

Так что либо:

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

, либо:

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