Python 在文本文件中循环,readline()构造在大文件上失败

Python 在文本文件中循环,readline()构造在大文件上失败,python,file-io,Python,File Io,在Python 2.6和2.7中,我会认为这两种构造是相同的: 方法A i=0 f=open('fred.txt','r') for line in f.readline(): i+=1 print i 方法B i=0 f=open('fred.txt','r') for line in f: i+=1 print i 但是,当fred.txt增加到74000行时,每行长度为2684个字符,方法A打印2685个字符,而方法B打印74000个字符。显然,方法B是首选的,但为什么

在Python 2.6和2.7中,我会认为这两种构造是相同的:

方法A

i=0
f=open('fred.txt','r')
for line in f.readline():
    i+=1
print i
方法B

i=0
f=open('fred.txt','r')
for line in f:
    i+=1
print i

但是,当fred.txt增加到74000行时,每行长度为2684个字符,方法A打印2685个字符,而方法B打印74000个字符。显然,方法B是首选的,但为什么方法A适用于小文件,但不适用于大文件?

有一个输入错误,应该是
f.readlines()
。你在读一行,然后循环读每一行中的字符


这两种方法(
readlines
vs直接迭代文件)应该给出相同的结果,但是
readlines
将把全部内容存储在内存中。

回顾编辑历史,最初是readlines(),但改为readline以避免将整个文件读入内存。这个愚蠢的错误应该在测试中被发现。感谢您的快速响应。所以说得清楚一点,迭代文件(不是readlines())一次只能读取一行?我的文件是26 GB>12 GiB内存。。。