2.1 ファイル全体の読み込み
Python ではテキストファイルを読み取るいくつかの方法があるよ。それぞれの方法には利点があって、用途に応じて使い分けるといいんだ。主な方法は、ファイル全体の読み込み、行ごとの読み込み、文字数を指定しての読み込みなどがあるよ。
read()
メソッドはファイルの内容全体を1つの文字列として読み取るんだ。
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
これってすごくシンプルな方法だよね。メソッドを1回呼び出すだけで、ファイルの内容が全部手に入る。でもデメリットもあるんだ。例えばファイルが200MBのログファイルだったら、読み込みが遅くなるし、アプリのメモリもすぐにいっぱいになっちゃうかも。
2.2 ファイルのすべての行を読み込む
read()
メソッドの代わりとしてreadlines()
メソッドがあるよ。これもファイル全体をメモリに読み込むんだけど、1つの大きな文字列じゃなくて、行ごとの文字列リストとして返してくれるんだ。
readlines()
メソッドはファイルのすべての行を読み込み、文字列のリストとして返すんだ。
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line.strip()) # strip() - 余分な空白と改行文字を削除する
file.close()
ファイルの内容を行ごとに処理する必要があるとわかってる場合には便利だよね。でもデメリットもあって、すごく大きなファイルの場合、この方法だとメモリをたくさん使うんだよ。
2.3 ファイルの行を繰り返す
file
オブジェクトには組み込みのイテレータがあるから、for
ループを使って内容を1行ずつ読み取ることができるんだ。これでファイル全体をメモリに読み込まずに行ごとに読み取ることができるよ。
例:
file = open('example.txt', 'r')
for line in file:
print(line.strip())
file.close()
この方法は大きなファイルに対してメモリ使用量がさらに効率的だよ。行を1つずつ読むからね。でも前の行に戻りたい場合や、読み込みの順番を変えたい場合は少し難しくなるかも。
この方法と前の方法をもう一度比べてみよう:
イテレータの使用 | readlines() メソッドの使用 |
---|---|
|
|
この方法は簡単で速いんだ。でも実際のプロジェクトで作業するときは、すべてのデータを一気にメモリに読み込んで、それをメモリ内で処理する方が速いこともあるよ。
readline()
と readlines()
メソッドはファイルから行を読み取るために使われるけど、動作は違うよ。readline()
は1行ずつ読み取ることができて、メモリ全体を使わずに読み込みを管理できるんだ。これは行ごとに処理する必要がある場合や、ファイルがメモリに全部読み込むには大きすぎるときに便利だよ。
一方、readlines()
はファイルのすべての行を一度に読み込んでリストとして返すよ。すべての行をすぐに処理する必要がある場合には便利なんだ。でもメモリ使用量が多くなるんだ、特にファイルが大きいときは注意だよ。
タスクによっては、メモリの節約や読み込み管理が重要な場合、readline()
の方が好ましいかも。でもすぐにすべての行を処理したい場合は readlines()
の方が便利なんだ。
2.4 ファイルの一部を読み込む
ファイルが大きすぎる場合、部分的に読み取ることもできるよ。read(n)
メソッドにパラメータ n
を渡して、読み取る文字数を指定できるんだ。もしファイルに n
より少ない文字しかなかったら、メソッド read()
はファイルの終わりまでを読み込むだけだよ。
例:
file = open('example.txt', 'r')
content = file.read(10) # 最初の10文字を読み取る
print(content)
file.close()
これは大きなファイルを部分的に読み取るのに便利だし、固定長のデータブロックを処理するのにも向いてるんだ。でもこの方法だと行の区切りを無視するから、行が途中で切れてしまうことがあるかもね。
2.5 ファイルを1行ずつ読み込む
もしイテレータを使いたくない理由があるなら、手動でファイルを1行ずつ読むこともできるよ。そのためにfile
オブジェクトには readline()
メソッドがあるんだ。これはreadlines()
と混同しないでね。
readline()
メソッドは1回の呼び出しでファイルから1行を読み取るよ。
例:
file = open('example.txt', 'r')
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.close()
この例では、読み取った行が空になるまでファイルの内容を1行ずつ読み込んでるんだ。
GO TO FULL VERSION