Открывает ли FasterCSV весь файл при чтении?

В такой ситуации:

FasterCSV.parse(uploaded_file) do |row|
  @rows[i] = row
  i += 1
  break row if i == 10
end

FasterCSV читает весь файл или только первые 10 строк? Я хочу отобразить первые пару строк файла CSV, но не хочу хранить весь файл в памяти. Это возможно?


person Asherlc    schedule 03.08.2012    source источник


Ответы (1)


Вы можете использовать FasterCSV для анализа файла построчно.

Из документации FasterCSV:

A Line at a Time
  FasterCSV.foreach("path/to/file.csv") do |row|
    # use row here...
  end

All at Once
  arr_of_arrs = FasterCSV.read("path/to/file.csv")

(Примечание. В вашем вопросе вы используете FasterCSV.parse, который используется только для анализа строк в CSV. Поскольку вы хотите использовать файлы, посмотрите на методы .foreach и .parse, которые будут обрабатывать открытие и сканирование файла на наличие ты.).

person cbeer    schedule 03.08.2012
comment
Потрясающе, спасибо. Не был уверен, что это все равно загрузит файл. Хорошо знать, что это не так. - person Asherlc; 03.08.2012