Python でファイルを読むとき

Python でファイルを読むときはいつも

1
2
3
4
5
6
f = open("file.txt")
line = f.readline()
while line:
print line
line = f.readline()
f.close()

のように書いていたけど、こんな書き方しなくても、

1
2
3
4
f = open("file.txt")
for line in f:
print line
f.close()

これでよかったんだ…。効率は良くないかもしれないけど、もっと短く書ける。

1
2
for line in open("file.txt"):
print line

でも Python 2.6 からは with 構文使うのがいいらしい。

1
2
3
with open("file.txt") as f:
for line in f:
print line

これなら with を抜けた後に自動的に f.close() されるようだ。まさに Lisp の with-open-file マクロだな。