В доисторические времена (Python 1.4) мы сделали:
fp = open('filename.txt')
while 1:
line = fp.readline()
if not line:
break
print line
после Python 2.1 мы сделали:
for line in open('filename.txt').xreadlines():
print line
прежде чем мы получим удобный протокол итератора в Python 2.3 и можем сделать:
for line in open('filename.txt'):
print line
Я видел несколько примеров, используя более подробные:
with open('filename.txt') as fp:
for line in fp:
print line
- это предпочтительный метод, идущий вперед?
[edit] Я получаю, что оператор with обеспечивает закрытие файла... но почему это не входит в протокол итератора для файловых объектов?