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

时间:2013-07-30 14:14:47

标签: python file

我想逐行读取大文本文件(如果找到一行" 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

4 个答案:

答案 0 :(得分:96)

没有必要在python中检查EOF,只需执行:

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

Why the with statement

  

在处理文件时,最好使用with关键字   对象。这样做的好处是文件在之后正确关闭   它的套件即使在路上引发异常也会完成。

答案 1 :(得分:8)

迭代文件中的每一行。 Python会自动检查文件结尾并为您关闭文件(使用with语法)。

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

答案 2 :(得分:3)

在某些情况下,您无法使用(非常有说服力的)with... for...结构。在这种情况下,请执行以下操作:

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

这将有效,因为readline()会留下一个尾随的换行符,其中EOF只是一个空字符串。

答案 3 :(得分:0)

您可以使用来停止输出中的两行分隔

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