PythonでテキストファイルやCSVファイルの最終行を読む方法について説明します。以下にいくつかの方法を示します。
1. 組み込み関数 open()
を使う
まずは組み込み関数 open()
を使ってファイルオブジェクトを取得し、先頭からすべての行を読んで最後のn行だけ出力する方法です。
def tail(fn, n):
with open(fn, 'r') as f:
f.readline()
lines = f.readlines()
return lines[-n:]
2. csvモジュールを使う
csvモジュールは行ごとに自動で配列に変換してくれるので、若干処理が遅くはなりますが、より簡潔に記述できます。
import csv
def tail_csv(fn, n):
with open(fn) as f:
reader = csv.reader(f)
next(reader)
rows = [row for row in reader]
return [list(map(float, row)) for row in rows[-n:]]
3. pandasモジュールを使う
pandasにはtail関数があるので驚くほど簡単に記述できます。
import pandas as pd
def tail_pd(fn, n):
df = pd.read_csv(fn)
return df.tail(n).values.tolist()
- それぞれの方法には利点と欠点がありますので、使用する状況により適切な方法を選択してください。