我想逐行读取大文本文件(并且如果发现有“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只是一个空字符串。