テキストファイルのアクセス (3/4)
作成:2013-03-11 08:01
更新:2013-03-11 08:01
更新:2013-03-11 08:01
■File.foreachで1行ずつ読み込む
File.readは大変便利ですが、まとめて読み込むため、読み込んだテキストデータを利用するのは逆に面倒かもしれません。
例えば、保管されたデータを加工して処理するような場合、すこしずつ読み込んでいったほうが処理しやすいでしょう。
こうした場合、「1行ずつテキストを読み込む」というやり方を取るのが一般的です。これにはいくつかのやり方があるのですが、ここでは「foreach」というメソッドを紹介しておきましょおう。
foreachは、配列などを処理するeachと同様に、多数の値すべてに処理を実行していくような場合に用いられます。()内の引数部分にファイルのパスを指定し、その後の{}内に処理を記述します。最初の部分に、| 変数 |というものがついていますね? この変数部分に、1行ずつ読み込まれたテキストが代入されます。
注意したいのは、「変数に取り出されるテキストからは、改行コードが除かれていない」という点でしょう。変数の末尾には、改行コードがついたままになっているのです。もし、テキスト部分だけを利用したいのであれば、「chomp」メソッドを使い、改行コードを取り除いたものを処理するとよいでしょう。
下のリスト欄に、実際の利用例を挙げておきます。sample.txtを開き、1行ずつ読み込んで変数にまとめて表示するサンプルです。前回のFile.readを使った例と比べてみましょう。こちらのほうが少々複雑ですが、しかし1行ずつテキストを取り出せるため、加工などには向いていることがわかるでしょう。
例えば、保管されたデータを加工して処理するような場合、すこしずつ読み込んでいったほうが処理しやすいでしょう。
こうした場合、「1行ずつテキストを読み込む」というやり方を取るのが一般的です。これにはいくつかのやり方があるのですが、ここでは「foreach」というメソッドを紹介しておきましょおう。
File.foreach( ファイルのパス ){ | 変数 |
……変数を利用し処理……
}
foreachは、配列などを処理するeachと同様に、多数の値すべてに処理を実行していくような場合に用いられます。()内の引数部分にファイルのパスを指定し、その後の{}内に処理を記述します。最初の部分に、| 変数 |というものがついていますね? この変数部分に、1行ずつ読み込まれたテキストが代入されます。
注意したいのは、「変数に取り出されるテキストからは、改行コードが除かれていない」という点でしょう。変数の末尾には、改行コードがついたままになっているのです。もし、テキスト部分だけを利用したいのであれば、「chomp」メソッドを使い、改行コードを取り除いたものを処理するとよいでしょう。
下のリスト欄に、実際の利用例を挙げておきます。sample.txtを開き、1行ずつ読み込んで変数にまとめて表示するサンプルです。前回のFile.readを使った例と比べてみましょう。こちらのほうが少々複雑ですが、しかし1行ずつテキストを取り出せるため、加工などには向いていることがわかるでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
# coding: utf-8 File.foreach('sample.txt'){|line| puts line.chomp } puts('sample.txt を読み込みました。')
※関連コンテンツ