CSV.read() 和 CSV.new() 之间的 Ruby 区别



给定下载CSV的链接(单击链接下载CSV而不是在浏览器中打开它(,我可以使用CSV.read()阅读它吗?我知道我可以使用:

CSV.new(open(params[:ad_csv]), headers: true).each |row|
  puts row # ad dict with header value as keys
end

我无法像这样阅读 csv CSV.read(open(params[:ad_csv]), headers: true, read_timeout: 600)

阅读了文档,但它并没有为我解决问题。因此,我的问题,CSV.read()CSV.new()之间的区别.

CSV.new只是初始化一个CSV实例,该实例可以分配给变量并可用于读取或写入。

CSV.read初始化 CSV 的实例并立即将其内容读取到数组中。从文档中:

使用 read 将 CSV 文件转换为数组数组。将path传递给文件,任何options ::new 都可以理解。

简化

(非常简化(CSV.read实现如下:

def self.read(path, *options)
  new(path, *options) { |csv| csv.read }
end

最新更新