2012年1月6日金曜日

Ruby (ファイルを行単位で処理する)

●一行ずつ処理する方法 File#getsは、入力の終わりに達すると、nilを返します。
File.open("foo.txt"){|file|
    while line = file.gets
        p line
    end
}

●一行ずつデータを読み込んでブロックを起動します。
def dump_lines(enumerable)
  enumerable.each{|line|
     puts line.chomp.dump
  }
end

File.open("foo.txt"){|io|
   dump_lines(io)
}

●例えば上記で定義したdef_linesは、配列や文字列を処理するに流用することができます。
ary = [
    "element 1 of array",
    "element 2 of array",
]


str = <<_end_of_text_
line 1 of string
line 2 of string
_end_of_text_

dump_lines(ary)
dump_lines(str)



●ファイルを読み込んで一行ずつの配列として扱うには以下の例のようにします。
File.readlines("foo.txt").each{|line|
   line.chomp!
   puts line
}

0 件のコメント:

コメントを投稿