Зацикливаясь в текстовом файле, конструкция readline () не работает на больших файлах - PullRequest
4 голосов
/ 31 декабря 2010

В 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 строк, каждая из которых имеет длину 2684 символа, Метод A печатает 2685, а Метод B печатает 74000. Очевидно, метод B предпочтительнее, но почему метод А работает для небольших файлов, но не работает для больших файлов?

1 Ответ

17 голосов
/ 31 декабря 2010

Есть опечатка, она должна быть f.readlines().Вы читаете одну строку и перебираете все символы в строке.

Оба метода (readlines против итерации по файлу напрямую) должны давать одинаковые результаты, но readlines сохранит все содержимоев памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...