これは、Pythonの「with」ステートメントをtry-exceptブロックと組み合わせて使用する正しい方法ですか?:
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
もしそうなら、それから物事の古い方法を考えてください:
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
ここでの「with」ステートメントの主な利点は、3行のコードを削除できることですか?この使用例では、私にとって説得力があるとは思えません( "with"ステートメントには他の使用があることは理解していますが)。
編集:上記の2つのコードブロックの機能は同じですか?
EDIT2:最初のいくつかの回答は「with」を使用することの利点について一般的に述べていますが、それらはここではわずかな利点のようです。私たちは何年もの間、明示的にf.close()を呼び出してきました(またはそうすべきだったはずです)。1つの利点は、ずさんなコーダーが「with」を使用することから利益を得るということです。