open(filename, mode = "rb", options = Hash.new) {|csv| ... } -> nil
[permalink][rdoc][edit]open(filename, mode = "rb", options = Hash.new) -> CSV
open(filename, options = Hash.new) {|csv| ... } -> nil
open(filename, options = Hash.new) -> CSV
-
このメソッドは IO オブジェクトをオープンして CSV でラップします。これは CSV ファイルを書くための主要なインターフェイスとして使うことを意図しています。
このメソッドは IO.open と同じように動きます。ブロックが与えられた場合はブロックに CSV オブジェクトを渡し、ブロック終了時にそれをクローズします。ブロックが与えられなかった場合は CSV オブジェクトを返します。
データが Encoding.default_external と異なる場合は、mode にエンコーディングを指定する文字列を埋め込まなければなりません。データをどのように解析するか決定するために CSV ライブラリはユーザが mode に指定したエンコーディングをチェックします。"rb:UTF-32BE:UTF-8" のように mode を指定すると UTF-32BE のデータを読み込んでUTF-8 に変換してから解析します。
また "rb:BOM|UTF-8" のように mode を指定すると BOM を自動的に取り除きます。
CSV オブジェクトは多くのメソッドを IO や File に委譲します。
- IO#binmode
- IO#binmode?
- IO#close
- IO#close_read
- IO#close_write
- IO#closed?
- IO#eof
- IO#eof?
- IO#external_encoding
- IO#fcntl
- IO#fileno
- File#flock
- IO#flush
- IO#fsync
- IO#internal_encoding
- IO#ioctl
- IO#isatty
- File#path
- IO#pid
- IO#pos
- IO#pos=
- IO#reopen
- IO#seek
- IO#stat
- StringIO#string
- IO#sync
- IO#sync=
- IO#tell
- IO#to_i
- IO#to_io
- File#truncate
- IO#tty?
- [PARAM] filename:
- ファイル名を指定します。
- [PARAM] mode:
- IO.open に指定できるものと同じものを指定できます。
- [PARAM] options:
- CSV.new のオプションと同じオプションを指定できます。
require "csv" File.write("test.csv", <<CSV) id,first name,last name,age 1,taro,tanaka,20 2,jiro,suzuki,18 3,ami,sato,19 4,yumi,adachi,21 CSV csv = CSV.open("test.csv", headers: true) csv.class # => CSV csv.first # => #<CSV::Row "id":"1" "first name":"taro" "last name":"tanaka" "age":"20">
require "csv" users =<<-EOS id,first name,last name,age 1,taro,tanaka,20 2,jiro,suzuki,18 3,ami,sato,19 4,yumi,adachi,21 EOS File.write("test.csv", users) CSV.open("test.csv", headers: true) do |csv| csv.class # => CSV csv.first # => #<CSV::Row "id":"1" "first name":"taro" "last name":"tanaka" "age":"20"> end
require "csv" CSV.open("test.csv", "w") do |csv| csv << ["id", "first name", "last name", "age"] csv << ["1", "taro", "tanaka", "20"] csv << ["2", "jiro", "suzuki", "18"] csv << ["3", "ami", "sato", "19"] csv << ["4", "yumi", "adachi", "21"] end print File.read("test.csv") # => id,first name,last name,age # 1,taro,tanaka,20 # 2,jiro,suzuki,18 # 3,ami,sato,19 # 4,yumi,adachi,21