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 

3 Solutions collect form web for “Python:读取循环中的所有文本文件行”

在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。

  • 用Spark加载CSV文件
  • 为什么“除了:通过”一个糟糕的编程习惯?
  • 获取导入模块的文件path
  • 在Django中,如何从初始化脚本中调用子命令“syncdb”?
  • 如何创build新的文件夹?
  • 如何推出我自己的pypi?
  • Python中的否定
  • 欧几里德距离怎么能用numpy来计算?
  • 删除前导和尾随空格?
  • 如何创build一个可以使用或不使用参数的Python装饰器?
  • 为什么在Python 3中将True和False更改为关键字?