巨大なテキスト ファイルを 1 行ずつ読みたい ("str" を含む行が見つかったら停止したい)。ファイルの終わりに達したかどうかを確認する方法は?
fn = 't.log'
f = open(fn, 'r')
while not _is_eof(f): ## how to check that end is reached?
s = f.readline()
print s
if "str" in s: break
ファイル内の各行を繰り返すだけです。with
Python はファイルの終わりを自動的にチェックし、(構文を使用して) ファイルを閉じます。
with open('fileName', 'r') as f:
for line in f:
if 'str' in line:
break
with... for...
(かなり説得力のある)構造を使用できない状況があります。その場合は、次のようにします。
line = self.fo.readline()
if len(line) != 0:
if 'str' in line:
break
これはreadline()
、 EOF が単なる空の文字列であるのに対し、末尾に改行文字が残るため機能します。