Одна проблема с использованием File
для ручного просмотра каждой строки в файле состоит в том, что файлы CSV могут содержать поля с \n
(символом новой строки) в них. File
примет это для обозначения новой строки, и в итоге вы попытаетесь разобрать частичную строку.
Вот еще один подход, который может работать для вас:
@csv = CSV.new('path/to/file.csv')
loop do
begin
row = @csv.shift
break unless row
# do stuff
rescue CSV::MalformedCSVError => error
# handle the error
next
end
end
Основным недостатком этого подхода является то, что при обработке ошибки у вас нет доступа к строке строки CSV, только к самому CSV::MalformedCSVError
.