5

Ruby 1.9 では、ARGF から CSV を読み取るにはどうすればよいですか?

次のことを試しましたが、何も出力されませんでした。

require 'csv'
CSV(ARGF).read do |row|
    p row
end
4

3 に答える 3

6

あなたが怠け者になりたいなら、あなたは試すことができます:

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

于 2012-10-24T19:41:43.963 に答える
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

その後、次の 2 つの方法で使用できます。

  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
于 2016-01-22T21:13:24.897 に答える
0
CSV.parse(ARGF.read) do |row|

怠惰ではありませんが、これはうまくいきました。

于 2012-10-24T19:17:37.400 に答える