pythonでは,イテレーションでファイル読み込みをするため,明示的にファイルの読み込みの終了を示すEOFを意識することはありません.ですが,複数のファイルを同時処理する際にハマったので,EOFの取得方法を調べてみました.
ファイルオブジェクトのreadline()が空文字かを調べる方法
readline()の返り値が空文字のとき,EOFまで達しています.
# -*- coding: utf-8 -*-
#!/usr/bin/env python
filename = 'test.txt'
with open(filename,'r') as fi:
while True:
line = fi.readline()
if not line:
break
組み込み型のファイルオブジェクトのStopIterationを用いる方法
※python2.3以上,python3以下でしか動きません.
ファイルオブジェクトからnext関数を呼び出した場合,EOFに達するとStopIterationという例外が発生します.これを捉えることで,EOFを検知できます.
# -*- coding: utf-8 -*-
#!/usr/bin/env python
filename = 'test.txt'
with open(filename,'r') as fi
while True:
try:
line = fi.next()
except StopIteration: # EOFに到達
break
参考リンク
- python2のファイルオブジェクト
- python3のファイルオブジェクト