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

时间:2010-12-31 04:59:53

标签: 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增长到74,000行时,每行长度为2,684个字符,方法A 打印2685,而方法B 打印74000.显然,方法B是首选,但为什么方法A适用于小文件但是大文件失败?

1 个答案:

答案 0 :(得分:17)

有一个拼写错误,它应该是f.readlines()。你正在阅读一行并循环遍历该行中的每个字符。

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