2013-07-30 415 views
33

我想逐行讀取大文本文件(並且如果發現有「str」的行則停止)。 如何檢查,如果文件結束?Python:讀取循環中的所有文本文件行

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 

回答

74

沒有必要在Python檢查EOF,簡單地做:

with open('t.ini') as f: 
    for line in f: 
     print line 
     if 'str' in line: 
      break 

Why the with statement

它與文件打交道 對象時使用的with關鍵字好的做法。這具有如下優點:在 其套件結束後,即使在路上引發異常,該文件也能正確關閉。

8

只是遍歷文件中的每一行。 Python會自動檢查文件的結尾併爲你關閉文件(使用with語法)。

with open('fileName', 'r') as f: 
    for line in f: 
     if 'str' in line: 
      break 
3

有些情況下,您不能使用(頗有說服力的)with... for...結構。在這種情況下,請執行下列操作:

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

這樣會起作用,因爲該readline()留下了尾部的換行符,那裏的EOF只是一個空字符串。

相關問題