Разбор удаленного файла с FasterCSV
Я пытаюсь разобрать первые 5 строк удаленного файла CSV. Однако, когда я делаю, это поднимает Errno::ENOENT
исключение и говорит:
No such file or directory - [file contents]
(при этом [содержимое файла] является дампом содержимого CSV
Вот мой код:
def preview
@csv = []
open('http://example.com/spreadsheet.csv') do |file|
CSV.foreach(file.read, :headers => true) do |row|
n += 1
@csv << row
if n == 5
return @csv
end
end
end
end
Приведенный выше код построен на основе того, что, как я видел, используют другие при переполнении стека, но я не могу заставить его работать.
Если я удалю read
метод из файла, это вызывает TypeError
исключение, сказав:
can't convert StringIO into String
Я что-то упускаю?
2 ответа
Вы можете вручную передать каждую строку в CSV для анализа:
require 'open-uri'
require 'csv'
def preview(file_url)
@csv = []
open(file_url).each_with_index do |line, i|
next if i == 0 #Ignore headers
@csv << CSV.parse(line)
if i == 5
return @csv
end
end
end
puts preview('http://www.ferc.gov/docs-filing/eqr/soft-tools/sample-csv/contract.txt')