Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > csvライブラリ > CSVクラス > open

singleton method CSV.open

open(path, mode, fs = nil, rs = nil) {|row| ... } -> nil[permalink][rdoc]
open(path, mode, fs = nil, rs = nil) -> CSV::Reader | CSV::Writer

CSVファイルを読み込んでパースします。

読み込みモード時には path にあるファイルを開き各行を配列として ブロックに渡します。

[PARAM] path:
パースするファイルのファイル名
[PARAM] mode:
処理モードの指定 'r', 'w', 'rb', 'wb' から指定可能です。 - 'r' 読み込み - 'w' 書き込み - 'b' バイナリモード
[PARAM] fs:
フィールドセパレータの指定。 nil (デフォルト) で ',' をセパレータとします。
[PARAM] rs:
行区切り文字の指定。nil (デフォルト) で CRLF / LF。 CR を行区切りとしたい場合は ?\r を渡します。

注意

パース時に""(空文字)と値なし(nil)を区別します。 例えば、読み込みモード時にa, "", , b の行をパースした場合には ["a", "", nil, "b"] の配列を返します。

例:

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

tsv(Tab Separated Values)ファイルなどのセパレータをカンマ以外で指定

CSV.open("/temp/test.tsv", 'r', "\t") do |row|
  puts row.join("<>")
end

ブロックを渡さなかった場合 CSV::Reader を返します。

書き込みモード時には path にあるファイルを開き CSV::Writer をブロックに渡します。

例:

CSV.open("/temp/test.csv", 'w') do |writer|
  writer << ["ruby", "perl", "python"]
  writer << ["java", "C", "C++"]
end

ブロック未指定の場合 CSV::Writer を返します。