【Ruby3.x】CSV::seek()メソッドの使い方
seekメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
seekメソッドは、CSVオブジェクトの読み込み位置を指定した行に移動するメソッドです。CSVファイルを扱う際、通常は最初から最後まで順番にデータを読み進めますが、このメソッドを使用すると、ファイルの途中にある特定の行に直接移動できます。
このメソッドは、引数として移動したい行番号を受け取ります。例えば、csv_object.seek(5)と記述すると、csv_objectはCSVファイルの5行目の先頭に読み込み位置を移動させます。その後、csv_objectからデータを読み出すメソッド(例えばreadやeachなど)を呼び出すと、新しい読み込み位置である5行目からデータの処理が開始されます。
主に、非常に大きなCSVファイルから特定の情報のみを効率的に取得したい場合に役立ちます。ファイル全体をメモリに読み込むことなく、必要な部分にだけアクセスできるため、メモリ使用量を抑え、処理速度の向上に貢献します。
ただし、行番号は通常1から始まる点や、CSVのデータ構造(例えば、引用符を含むフィールドが改行を含む場合など)によっては、期待通りに正確な行に移動しない可能性もあるため、使用する際はCSVデータの特性を理解しておくことが重要です。このメソッドは、CSVデータの操作において柔軟性と効率性をもたらします。
構文(syntax)
1require 'csv' 2 3CSV.open("data.csv", "r") do |csv| 4 csv.seek(10) 5end
引数(parameters)
*args, **kwargs, &block
- position: Integer: ファイルポインタを移動させる絶対的な位置を指定します。
- offset: Integer: ファイルポインタを移動させる相対的なオフセットを指定します。
- whence: Integer:
positionの基準となる位置を指定します。IO::SEEK_SET(0) はファイルの先頭、IO::SEEK_CUR(1) は現在の位置、IO::SEEK_END(2) はファイルの末尾を基準とします。
戻り値(return)
nil
CSVオブジェクトの内部的な読み取り位置を指定したバイトオフセットに移動させます。このメソッドは、正常に実行された場合、nilを返します。