結論から言うと下記が最もスマートでモダンな書き方っぽい。
f = open('/tmp/test.txt')
for line in f:
print line
f.close()
※追記
Python2.5以降ならwithを使うともっとモダンというのをコメントやらブクマコメントで教えてもらった。
from __future__ import with_statement
with open('/tmp/test.txt') as f:
for line in f:
print line
下記は古いやり方。(ってPythonクックブックに書いてあった)
f = open('/tmp/test.txt')
while True:
line = f.readline()
if not line:
break
print line
f.close()
下記はファイルの中味が全部メモリに乗っちゃうから危険。
f = open('/tmp/test.txt')
for line in f.readlines():
print line
f.close()
まとめ(イテレータ)
for line in f:
print line
という書き方ができるのはfileが__iter__()とnext()を実装しているおかげ。詳しくはPEP-234に詳しく書いてある。