Python:读取循环中的所有文本文件行

我想逐行阅读巨大的文本文件(如果发现有“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 

在python中不需要检查EOF,只需要:

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

为什么用with声明 :

处理文件对象时,最好使用with关键字。 这有一个好处,就是文件在套件结束后可以正常closures,即使在路上出现exception。

只需遍历文件中的每一行。 Python自动检查文件的结尾并为你closures文件(使用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只是一个空string。