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