libro
www.tuyano.com
初心者のためのRubyプログラミング入門

テキストファイルのアクセス (3/4)

作成:2013-03-11 08:01
更新:2013-03-11 08:01

■File.foreachで1行ずつ読み込む

File.readは大変便利ですが、まとめて読み込むため、読み込んだテキストデータを利用するのは逆に面倒かもしれません。

例えば、保管されたデータを加工して処理するような場合、すこしずつ読み込んでいったほうが処理しやすいでしょう。

こうした場合、「1行ずつテキストを読み込む」というやり方を取るのが一般的です。これにはいくつかのやり方があるのですが、ここでは「foreach」というメソッドを紹介しておきましょおう。

File.foreach( ファイルのパス ){ | 変数 |
    ……変数を利用し処理……
}

foreachは、配列などを処理するeachと同様に、多数の値すべてに処理を実行していくような場合に用いられます。()内の引数部分にファイルのパスを指定し、その後の{}内に処理を記述します。最初の部分に、| 変数 |というものがついていますね? この変数部分に、1行ずつ読み込まれたテキストが代入されます。

注意したいのは、「変数に取り出されるテキストからは、改行コードが除かれていない」という点でしょう。変数の末尾には、改行コードがついたままになっているのです。もし、テキスト部分だけを利用したいのであれば、「chomp」メソッドを使い、改行コードを取り除いたものを処理するとよいでしょう。

下のリスト欄に、実際の利用例を挙げておきます。sample.txtを開き、1行ずつ読み込んで変数にまとめて表示するサンプルです。前回のFile.readを使った例と比べてみましょう。こちらのほうが少々複雑ですが、しかし1行ずつテキストを取り出せるため、加工などには向いていることがわかるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

# coding: utf-8

File.foreach('sample.txt'){|line|
    puts line.chomp
}
puts('sample.txt を読み込みました。')
※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る