我想逐行讀取大文本文件(並且如果發現有「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
我想逐行讀取大文本文件(並且如果發現有「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
沒有必要在Python檢查EOF,簡單地做:
with open('t.ini') as f:
for line in f:
print line
if 'str' in line:
break
它與文件打交道 對象時使用的
with
關鍵字好的做法。這具有如下優點:在 其套件結束後,即使在路上引發異常,該文件也能正確關閉。
只是遍歷文件中的每一行。 Python會自動檢查文件的結尾併爲你關閉文件(使用with
語法)。
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只是一個空字符串。