什么时候是使用readline()的好时机?

时间:2017-10-29 22:37:59

标签: python file

许多人已经问过如何在Python中逐行读取文件。并且,许多人建议采用以下方式,而不是使用readline()。

with open('myfile.py') as f:
  for line in f:

另外,有些人说readlines()不是一种使用内存的有效方法,因为它一次读取所有内容。

有没有时间我应该使用readline()而不是上面推荐的方法?或者,我应该忘记这个功能??

2 个答案:

答案 0 :(得分:2)

只有在无法使用readline()时才会使用for

示例:该文件包含固定标题,如

  • 第1行:修复了文件类型
  • 的识别字符串
  • 第二行:文件类型版本标识符
  • 第3行:以下二进制数据的大小
  • 后跟:给定金额的二进制数据

在这种情况下,for - 循环需要某种行计数变量来记住当前正在处理的行。

这最终会出现在这样的代码中:

for i, line in enumerate(f):
    if i == 0:
        if line != "Foobar file format\n":
            raise Exception("Wrong file format")
    elif i == 1:
        if int(line) > 4:
            raise Exception("File format version too new")
    elif i == 2:
        size = int(line)
        break

而不仅仅是这个

if f.readline() != "Foobar file format\n":
    raise Exception("Wrong file format")

if int(f.readline()) > 4:
    raise Exception("File format version too new")

size = int(f.readline())

(为清楚起见省略了一些错误检查)

答案 1 :(得分:1)

如果您想要一次一个地使用每一行,而不是按照它们出现在文件内部的顺序(即第3行> 2-> 6-> 5→。等)。