目次(まとめ)

◾️ 通常のテキストファイルの読み込み

◾️ コンマ区切り(CSV)ファイルの読み込みには、ライブラリを使用可能


こんにちは、みっちゃんです。

今回の記事では、Rubyでさまざまなテキストファイルを読み込む方法を解説します。

通常のテキストファイルの読み込み

説明のために、以下のようなコンマ区切りのファイル(CSVファイル:test.csv)を、入力ファイルとして準備します。

# test.csv
Name,Math,English
A,53,86
B,46,75
C,42,76
D,23,86
E,58,43

Rubyでさまざまなテキストファイルを読み込むためには、以下のように、ファイルを読み込みます。

infile = open("test.csv", "r")

ここで、"test.csv" は今読み込みたいファイル名、"r" は読み込みモードでファイルを開く、ということを指定しています。"infile" という変数名は、他の文字列でも大丈夫ですが、"input file" を意味しています。

上の操作により、"test.csv" のファイルを開いて、"infile" という変数に保存しています。

実際に、"test.csv" の内容を表示するためには、読み込みモードで開いたファイル "infile" を読み込む必要があるので、以下のように実行します。

data = infile.read

この操作により、"data" という変数に、"infile" から読み込んだ内容がすべて保存されています。

内容すべてを表示させるためには、以下のように実行します。

print(data)

# Name,Math,English
# A,53,86
# B,46,75
# C,42,76
# D,23,86
# E,58,43

または、以下のように実行することも可能です。

data = File.read("test.csv")

print(data)

一方で、ファイルの内容を、1行ずつ表示させたい場合には、例えば、以下のように実行します。

while line = infile.gets
   print(line)
end

# Name,Math,English
# A,53,86
# B,46,75
# C,42,76
# D,23,86
# E,58,43

出力内容は同じですが、1行ずつデータを処理したいときに便利です。

最後に、読み込みモードで開いておいたファイルを閉じるために、以下のように実行します。

infile.close

また、1行ずつ表示する際には、以下のように実行することも可能です。

File.foreach("test.csv") do |line|
  print(line)
end

コンマ区切り(CSV)ファイルの読み込みには、ライブラリを使用可能

Rubyには、コンマ区切りファイルであるCSVファイルを読み込むためのライブラリが準備されているので、CSVファイルを取り扱う場合には、以下のようにライブラリを読み込んで利用すると便利です。

require 'csv'

ファイル全体を読み込んで表示させたい場合には、以下のように実行します。

data = CSV.read("test.csv")

print(data)

# [["Name", "Math", "English"], ["A", "53", "86"], ["B", "46", "75"], ["C", "42", "76"], ["D", "23", "86"], ["E", "58", "43"]]

また、1行ずつ表示させたい場合には、以下のように実行できます。

CSV.foreach("test.csv") do |line|
  print(line)
end

# ["Name", "Math", "English"]["A", "53", "86"]["B", "46", "75"]["C", "42", "76"]["D", "23", "86"]["E", "58", "43"]