在Ruby 1.9中,如何从ARGF读取CSV?如何从ARGF读取csv
我尝试以下,但它没有印:
require 'csv'
CSV(ARGF).read do |row|
p row
end
- http://www.ruby-doc.org/core-1.9.3/ARGF.html
- http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html
在Ruby 1.9中,如何从ARGF读取CSV?如何从ARGF读取csv
我尝试以下,但它没有印:
require 'csv'
CSV(ARGF).read do |row|
p row
end
CSV.parse(ARGF.read) do |row|
这个工作,虽然它不是懒惰。
如果你想偷懒,你可以尝试:
CSV.new(ARGF.file).each do |row|
...
end
来源:
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html#label-Wrap+an+IO+Object
因为它在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
然后,它可以使用两种方式:
cat path/to/my.csv | ./readCSV.rb | less # for useless use of cat
./readCSV.rb < path/to/my.csv
./readCSV.rb path/to/my.csv | less
你为什么从ARGF阅读? ARGV对CSV更为典型。 –