コンテンツにスキップ

コンテキスト

open() を使ってファイルの読み書きをした後は必ず close() を使ってファイルを閉じる必要があります。しかしファイルの閉じ忘れがよくあるミスの 1 つです。このファイルの閉じ忘れをなくすために Python にはコンテキストマネージャという機能が用意されています。コンテキストマネージャを使えばファイルの読み書きが不要になったときに暗黙的にファイルを閉じてくれるようになります。

with

コンテキストマネージャを使うには with 文という構文を使用します。

f = open('file.txt')

のように記述していた部分を

with open('file.txt') as f:

という構文で書き直します。そうするとファイルインスタンス fwith のブロック内だけで使用できるようになり、ブロックを抜けると暗黙的に f.close() を読んでファイルをクローズしてくれるようになります。下記は with を使ってファイルを読み込む例です。

main.py

#!/usr/bin/env python


def main():
    with open('file.txt') as f:
        for line in f:
            print(line)


if __name__ == '__main__':
    main()

ファイルの閉じ忘れを防ぐためにもファイル操作を行う際はいつもコンテキストマネージャを用いたほうが良いでしょう。