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。