目次(まとめ)
◾️ 通常のテキストファイルの読み込み
◾️ コンマ区切り(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"]