许多人已经问过如何在Python中逐行读取文件。并且,许多人建议采用以下方式,而不是使用readline()。
with open('myfile.py') as f:
for line in f:
另外,有些人说readlines()不是一种使用内存的有效方法,因为它一次读取所有内容。
有没有时间我应该使用readline()而不是上面推荐的方法?或者,我应该忘记这个功能??
答案 0 :(得分:2)
只有在无法使用readline()
时才会使用for
。
示例:该文件包含固定标题,如
在这种情况下,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→。等)。