65

巨大なテキスト ファイルを 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
4

4 に答える 4

149

Python で EOF をチェックする必要はありません。単純に次のようにします。

with open('t.ini') as f:
   for line in f:
       # For Python3, use print(line)
       print line
       if 'str' in line:
          break

理由with: _

withファイル オブジェクトを扱うときは、キーワードを使用することをお勧めします。これには、途中で例外が発生した場合でも、スイートの終了後にファイルが適切に閉じられるという利点があります。

于 2013-07-30T14:16:19.583 に答える
14

ファイル内の各行を繰り返すだけです。withPython はファイルの終わりを自動的にチェックし、(構文を使用して) ファイルを閉じます。

with open('fileName', 'r') as f:
    for line in f:
       if 'str' in line:
           break
于 2013-07-30T14:15:46.373 に答える
5

with... for...(かなり説得力のある)構造を使用できない状況があります。その場合は、次のようにします。

line = self.fo.readline()
if len(line) != 0:
     if 'str' in line:
         break

これはreadline()、 EOF が単なる空の文字列であるのに対し、末尾に改行文字が残るため機能します。

于 2015-08-13T16:17:09.357 に答える