1

これは機能します:

    require 'csv'
    file = CSV.open(filename)
    puts file.shift

これはしません:

    require 'csv'
    file = CSV.open(filename, :headers=>true)
    puts file.shift

私は得る:

C:/Program Files (x86)/IronRuby 1.1/Lib/ruby/1.9.1/csv.rb:2177:in `convert_field
s': undefined method `with_index' for IronRuby.Builtins.Enumerator:Enumerator (N
oMethodError)
    from C:/Program Files (x86)/IronRuby 1.1/Lib/ruby/1.9.1/csv.rb:2218:in `
parse_headers'
    from C:/Program Files (x86)/IronRuby 1.1/Lib/ruby/1.9.1/csv.rb:1918:in `
shift'
    from C:/Program Files (x86)/IronRuby 1.1/Lib/ruby/1.9.1/csv.rb:1818:in `
loop'
    from C:/Program Files (x86)/IronRuby 1.1/Lib/ruby/1.9.1/csv.rb:1818:in `
shift'
    from C:/myproject/myproject/myproject/Program.rb:3

Ironruby 1.1.3 を使用しています

headers オプションを使用して 1 行を取得するための正しい構文を探しています。

4

2 に答える 2

2

これを別のエンジンでテストしたところ、Ironruby のバグのようです

于 2012-06-07T08:15:01.803 に答える
0

これを試して、colsep を気にし、CSV ファイルにあるものに適応させることができます。ヘッダーを表示する場合:

require 'csv'

path = "G:/documents/musicinfo"
Dir.glob("#{path}/**/*.csv").each {|file|
  CSV.foreach(file, :col_sep => ';') do |row|
    puts "#{file} => #{row}"
    break
  end
}

配列として与える:

G:/documents/musicinfo/album.csv => ["album_release_year", "album_id", "artist_id", "album"]
G:/documents/musicinfo/artist.csv => ["artist_id", "artist_name"]
G:/documents/musicinfo/Copy of all2.csv => ["album_release_year,album_id,track_id,artist_id,artist_name,duration,genre,track_popularity,disc_number,track_number,track,album"]
G:/documents/musicinfo/genres.csv => ["genreId", " genreNaam"]
G:/documents/musicinfo/songs.csv => ["album_id", " track_id", " artist_id", " track_popularity", "genre_id", "track"]

また、最初のデータ行を表示するか、CSV として保持する場合は、上記を次のように調整します。

CSV.foreach(file, :col_sep => ';', :headers => true) do |row|

これにより、次のことが得られます。

G:/documents/musicinfo/album.csv => 0000,10747312,11522976,Beyond Imagination (Bonus Track Version)
G:/documents/musicinfo/artist.csv => 10000004,Jimi Hendrix
G:/documents/musicinfo/Copy of all2.csv => "2008,12877382,24516577,10000004,Jimi Hendrix,05:39,Pop,9,16,1,10,Free spirit"
G:/documents/musicinfo/genres.csv => 1,Alternative
G:/documents/musicinfo/songs.csv => 12877382,24516577,10000004,9,16,Free spirit
于 2012-06-04T14:17:35.600 に答える