with句は、Pythonの構文の一つで、ファイル操作やネットワーク通信、データベース操作などで必要なリソースを確実に解放するための構文です。

例えば、ファイルを開いてデータを読み込む場合、以下のようなコードを書くことができます。

f = open('sample.txt', 'r') data = f.read() f.close()

しかし、このコードには問題があります。open()でファイルを開いた後、read()でデータを読み込んだ後、close()でファイルを閉じる必要がありますが、read()でエラーが発生した場合、close()が呼ばれずリソースが解放されない可能性があります。

そこで、with句を使用すると以下のように書くことができます。

with open('sample.txt', 'r') as f: data = f.read()

このように、withキーワードを使用してopen()を呼び出し、ファイルを扱うブロックを作成します。ファイル操作が終了したら、ブロックを抜ける際に自動的にclose()が呼ばれるため、リソースが解放されます。

また、複数のファイル操作を行う場合でも、with句を使うことでコードを簡潔に書くことができます。

with open('input.txt', 'r') as f_in, open('output.txt', 'w') as f_out: data = f_in.read() f_out.write(data)

このように、,を使って複数のファイルを一度に開くことができます。

with句はファイル操作だけでなく、ネットワーク通信やデータベース操作などでも使用することができます。利用する際には、解放すべきリソースが何かを理解した上で使用することが重要です。

リンク

with clause[EN]