В до -исторические времена (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
это предпочтительный метод в будущем?
[править] Я понимаю, что оператор with обеспечивает закрытие файла... но почему это не включено в протокол итератора для файловых объектов?