解析远程csv文件:没有这样的文件或目录@ rb_sysopen



我正在尝试解析远程托管的csv文件。I用户rails 6和活动存储。该文件存储在ImportJob模型中。它的url可以这样访问:

ImportJob.last.csv_file.url

文件确实存在并且可以下载:http://res.cloudinary.com/dockcyr0z/raw/upload/rghn3zi2190nmc28qwbtr24apqxe.csv

但是当试图解析

CSV.foreach(url, headers: true, header_converters: :symbol, col_sep: ';') do |row|
puts row
end

我得到Errno::ENOENT: No such file or directory @ rb_sysopen - http://res.cloudinary.com/dockcyr0z/raw/upload/rghn3zi2190nmc28qwbtr24apqxe.csv

同样的事情,如果我尝试先打开文件:open(url)

为什么我得到这个错误?如何解析远程csv文件?

URI.parse打开url,将CSV.foreach改为CSV.parse

CSV.parse(URI.parse(url).read, headers: true, header_converters: :symbol, col_sep: ';') do |row|
puts row
end
# output
{
:first_name => "Souper",
:last_name => "Man",
:email => "dageismar+learner233@gmail.com",
:role => "CEO",
:tags => "sales,marketing",
:avatar_url => "http://res.cloudinary.com/dockcyr0z/image/upload/x3f65o5mepbdhi4fwvww99gjqr7p"
}
{
:first_name => "Gentil",
:last_name => "Keum",
:email => "dageismar+learner234@gmail.com",
:role => "CEO",
:tags => "sales,marketing",
:avatar_url => "http://res.cloudinary.com/dockcyr0z/image/upload/x3f65o5mepbdhi4fwvww99gjqr7p"
}

:

或者就像Stefan建议的那样,用URI.open(url)代替URI.parse(url).read

最新更新