【python】ファイルを開く際にopenではなくwithを使う方法

Pythonでファイルを開くときはopenを使用し,最後にcloseを使用します

しかし,Pythonではwithとopenを組み合わせてファイルを開くことが推奨されています

本記事では,withはどうやって使うのか?なぜwithを使う方がいいのか?といった点をopenのみの場合と比較しながら解説します

目次

openだけで開く

pythonでtxtファイルをopenを用いて開きます

f = open('tools/test.txt', 'r', encoding='utf-8')
print(f.read())
f.close()

# 1 本日は雨
# 2 あえて裸足であるきます
# 3 沼にはまって抜け出せません
# 4 明日は晴れではなさそう
# 5 今日うちに帰ったら早く寝よう
# 6 やっぱりネトフリ見るか

with openでファイルを開く

withブロックを用いてファイルを開きます

with open('tools/test.txt', 'r', encoding='utf-8') as f:
    print(f.read())

# 1 本日は雨
# 2 あえて裸足であるきます
# 3 沼にはまって抜け出せません
# 4 明日は晴れではなさそう
# 5 今日うちに帰ったら早く寝よう
# 6 やっぱりネトフリ見るか

withを用いるメリット

これでwithの美しさがわかったと思います

withの大きなメリットは2つです

  • close忘れがなくなる
  • コードが1行減る
  • インデントで区切られ,可読性がよくなる

close忘れがなくなる

withを用いることで,closeを使用しなくて済み,close忘れがなくなるというメリットがあります

軽いファイルであれば問題ありませんが,昨今では重たいデータファイルが多く,closeを忘れると動作が重たくなります

この問題を気にしなくても良いというのは非常に素晴らしいメリットです

コードが1行減る

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で処理した方がきれいにまとまっているような気もします

お疲れ様でした

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次