遍历文本文件时,读取大文件时readline()失败
在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
会把整个文件的内容都存到内存里。