with open('filename') as f
誰かが自分のコードを投稿すると、「今すぐ構文を使うべきだ」という余談が追加されることがよくあります。昔ながらのf = open()
ステートメントのほとんどに が付随していないことに同意し.close()
ます。また、この「暗黙のクローズ」への依存がプログラミングの問題の全体的な原因であるという質問にも答えました。
ただし、場合によっては、コードをwith
ブロック内にネストすると、コードを記述する際に別の不都合が生じることがあります。たとえば、私はときどきフラグを先頭に使ってwritefile = True
. これにより、同じ処理スレッドを維持しながら、使用する場合にのみファイルを開いたり閉じたりできます。コードのさまざまな場所で、画面に出力したり、ファイルに書き込んだりできます。stdout
(最初にまたはファイルを開き、代わりにそのアプローチを使用することに気づきました。)
私の質問は次のとおりです:ファイルを明示的に閉じる必要がないことに加えて、ファイル、特に出力ファイルを処理するために構文を使用する他の理由はありますか? with
(「よりpythonic」自体は理由ではありません。)これが重複している場合は、これを指摘していただければ幸いですが、自分で見つけることができませんでした。