遍历文本文件时,读取大文件时readline()失败

4 投票
1 回答
65548 浏览
提问于 2025-04-16 09:14

在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文件变得有74,000行,每行有2,684个字符时,方法A输出的是2685,而方法B输出的是74000。很明显,方法B更好,但为什么方法A在小文件上能正常工作,而在大文件上就不行呢?

1 个回答

18

这里有个拼写错误,应该是 f.readlines()。你现在是读取一行,然后在这一行的每个字符上循环。

这两种方法(readlines 和直接遍历文件)应该得到一样的结果,但 readlines 会把整个文件的内容都存到内存里。

撰写回答