2012-10-24 50 views

回答

0
CSV.parse(ARGF.read) do |row| 

这个工作,虽然它不是懒惰。

4

因为它在http://www.ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html#label-Wrap+an+IO+Object据说用IO(如ARGF),你需要创建一个新的CVS对象:

csv = CSV.new(io, options) 

这样一个做工精细的例子:

#!/usr/bin/env ruby 
#file : readCSV.rb 
require "csv" 
csv = CSV.new(ARGF, {:col_sep=>";", :headers=>:first_row}) 
csv.each do |line| 
    p line.to_s 
end 

然后,它可以使用两种方式:

  1. cat path/to/my.csv | ./readCSV.rb | less # for useless use of cat
  2. ./readCSV.rb < path/to/my.csv
  3. ./readCSV.rb path/to/my.csv | less