oinume journal

Scratchpad of what I learned

Pythonでファイルを読み込むスマートなやり方

結論から言うと下記が最もスマートでモダンな書き方っぽい。

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に詳しく書いてある。 

みんなのPython 第3版

みんなのPython 第3版