[ruby-list:42947] CSV

From: "S_Konno(今野 滋)" <sk@...>
Date: 2006-11-02 12:33:59 UTC
List: ruby-list #42947
今野です。

csvファイルを作成して、リファレンスマニュアル
http://www.ruby-lang.org/ja/man/?cmd=view;name=CSV
に書いてある通りの例

require "csv"
CSV.open("test.csv", 'r') do |row|
  puts row.join("<>")
end

または、

require "csv"
CSV.foreach('test.csv'){|row|
  puts row.join('<>')
}

を実行すると、

/usr/lib/ruby/1.8/csv.rb:639:in `get_row': CSV::IllegalFormatError (CSV::IllegalFormatError)
        from /usr/lib/ruby/1.8/csv.rb:556:in `each'
        from /usr/lib/ruby/1.8/csv.rb:531:in `parse'
        from /usr/lib/ruby/1.8/csv.rb:311:in `open_reader'
        from /usr/lib/ruby/1.8/csv.rb:94:in `foreach'
        from t.rb:8

なるエラーが出ます。
ちゃんと動くようにするには、何が足りないのでしょう?

その昔、

require "csv"
f = File.open('test.csv')
crp = CSV::Reader.parse(f)
crp.each do |gyou|
  ***
end
f.close

で、だましだまし動いていたのですが、
これも今は効かなくなっています。
やはり、下記の様に、get_rowで引っかかっています。

/usr/lib/ruby/1.8/csv.rb:639:in `get_row': CSV::IllegalFormatError (CSV::IllegalFormatError)
        from /usr/lib/ruby/1.8/csv.rb:556:in `each'
        from Tmp_mi_rubymode.rb:4

それで、556行目を見てみると、
 parsed_cells = get_row(row)
これは、class Reader の中にあるので、見てみると、
    def get_row(row)
      raise NotImplementedError.new('Method get_row must be defined in a derived class.')
    end
だ、そうです。(http://www.ruby-lang.org/ja/man/?cmd=view;name=NotImplementedError)
639行目は、class IOReader < Reader の中の、def get_row(row) の中で、
raise IllegalFormatError.new
となっています。要するに、「使えません」といわれている。

csvファイルが扱えると、大変助かるのですが・・・

よろしくお願いします。
--
今野 滋



In This Thread

Prev Next