Экспорт rec2csv с пустой строкой между строками

Я пытаюсь экспортировать 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 ответ

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

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

Так что либо делайте:

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

или сделать:

with open('J:\\export.csv', 'wb') as outfile:
    mlab.rec2csv(r, outfile)
Другие вопросы по тегам