Pythonでファイルを操作する際、open
関数を使用してファイルを開き、最後にclose
関数を使用してファイルを閉じます。しかし、Pythonではwith
とopen
を組み合わせてファイルを開くことが推奨されています。
openだけで開く
Pythonでテキストファイルをopen
を用いて開く基本的なコードは以下の通りです。
f = open('tools/test.txt', 'r', encoding='utf-8')
print(f.read())
f.close()
with openでファイルを開く
with
ブロックを用いてファイルを開く方法は以下の通りです。
with open('tools/test.txt', 'r', encoding='utf-8') as f:
print(f.read())
withを用いるメリット
with
を用いることで、close
を使用しなくて済み、close
忘れがなくなるというメリットがあります。軽いファイルであれば問題ありませんが、昨今では重たいデータファイルが多く、close
を忘れると動作が重たくなります。この問題を気にしなくても良いというのは非常に素晴らしいメリットです。
また、with
を用いるとインデントの中だけでファイルが開かれ、その後自動で閉じてくれます。コードがシンプルであればあるほど良いです。close
忘れがなくなるだけでなく、コードが1行減るというのは素晴らしいことです。
さらに、with
はファイルの操作をする際にインデント内で行います。Pythonはインデントでコードを判断するために、コードをパッと見て、ファイルを開いているということがわかります。with
を用いない場合、単調にコードが続くので読むのが辛いです。コードがより大規模になればなるほどこの差は大きくなっていきます。
逆にwithを使わない方がよい場面
try
を使用する際はwith
を使わない方がよいかもしれません。
f = open('tools/test.txt', 'r', encoding='utf-8')
try:
print(f.read())
finally:
f.close()
finally
で処理した方がきれいにまとまっているような気もします。
以上がPythonのwith open
ステートメントの基本的な使い方とそのメリットについての解説です。この記事がPythonのファイル操作におけるwith open
ステートメントの理解に役立つことを願っています。.