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

Wom*_*tPM 4 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
Run Code Online (Sandbox Code Playgroud)

方法B.

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

但是,当fred.txt增长到74,000行时,每行长度为2,684个字符,方法A打印2685,而方法B打印74000.显然,方法B是首选,但为什么方法A适用于小文件但是失败大文件?

Jos*_*Lee 17

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

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