CSV.open
, в то время как это работает, противоречит сигнатуре метода, который хочет имя файла, а не объект ввода-вывода. Вполне возможно, что если в дальнейшем исправить это поведение, использование CSV.open
для продолжения ввода объекта ввода-вывода прекратится.
Вместо этого в первом примере документации CSV *1017* рекомендуется:
csv = CSV.new(string_or_io, **options)
# Reading: IO object should be open for read
csv.read # => array of rows
# or
csv.each do |row|
# ...
end
...
foreach
- это форма each
, которую я бы использовал, потому что она лучше подходит моему мозгу, YMMV:
CSV.foreach(URI.open(covids))
в качестве отправной точки. Вот пример просмотра первой записи в файле:
require 'open-uri'
require 'csv'
covids = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv"
CSV.foreach(URI.open(covids)).first
# => ["Province/State",
# "Country/Region",
# "Lat",
# "Long",
# "1/22/20",
# "1/23/20",
# "1/24/20",
# "1/25/20",
# "1/26/20",
# "1/27/20",
# "1/28/20",
# "1/29/20",
# "1/30/20",
# "1/31/20",
# "2/1/20",
# "2/2/20",
# "2/3/20",
# "2/4/20",
# "2/5/20",
# "2/6/20",
# "2/7/20",
# "2/8/20",
# "2/9/20",
# "2/10/20",
# "2/11/20",
# "2/12/20",
# "2/13/20",
# "2/14/20",
# "2/15/20",
# "2/16/20",
# "2/17/20",
# "2/18/20",
# "2/19/20",
# "2/20/20",
# "2/21/20",
# "2/22/20",
# "2/23/20",
# "2/24/20",
# "2/25/20",
# "2/26/20",
# "2/27/20",
# "2/28/20",
# "2/29/20",
# "3/1/20",
# "3/2/20",
# "3/3/20",
# "3/4/20",
# "3/5/20",
# "3/6/20",
# "3/7/20",
# "3/8/20",
# "3/9/20",
# "3/10/20"]