ファイルオブジェクトはファイルを読み取るときに、ポインタを使用してファイルの場所を追跡します。ファイルの一部を読んだら、後で戻って、中断したところから再開します。ファイル全体を読み取り、同じファイルオブジェクトに戻ると、ポインタがファイルの最後にあり、読み取るものが何もないため、空のファイルを読み取るようなものになります。を使用file.tell()
して、ファイル内のどこにポインターがあるかを確認し、ポインターfile.seek
を設定できます。例えば:
>>> file = open('myfile.txt')
>>> file.tell()
0
>>> file.readline()
'one\n'
>>> file.tell()
4L
>>> file.readline()
'2\n'
>>> file.tell()
6L
>>> file.seek(4)
>>> file.readline()
'2\n'
file.readlines()
また、ファイル全体を読み取り、リストとして保存することを知っておく必要があります。次のものを置き換えることができるので、知っておくと便利です。
for line in file.readlines():
#do stuff
file.seek(0)
for line in file.readlines():
#do more stuff
と:
lines = file.readlines()
for each_line in lines:
#do stuff
for each_line in lines:
#do more stuff
次の手順を実行することで、ファイル全体をメモリに保持せずに、一度に1行ずつファイルを反復処理することもできます(これは非常に大きなファイルの場合に非常に便利です)。
for line in file:
#do stuff