これは、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() を明示的に呼び出してきました (またはそうすべきでした)。ずさんなコーダーが「with」を使用することで恩恵を受けるという利点があると思います。