Python入門から応用までの学習サイト


with文

Pythonでは前処理、後処理を必要とするオブジェクトを扱う時に、それを簡易的な構文で記述することができる仕組みがあります。 それがwith文であり、代表的な例としてはファイルを取り扱う時に用いられます。

ファイルオブジェクトは「開いてから」該当のファイルに対して操作を行い、それが終われば「閉じる」ことが必要なオブジェクトです。 これらを取り扱う際、開くことを忘れることはありえませんが、閉じることを忘れてしまう場合があります。 with文を使用すると、後処理として必ずファイルがクローズされるため、これを防止することができます。

# -*- coding: utf-8 -*- 


with open('file.txt') as f:
    
    #
    # 何らかの処理を行う
    #
    
    print f.closed

print f.closed

--実行結果--

False
True

「closed」は、ファイルが閉じられている状態の時にTrueが格納されます。実行結果からwithブロックを抜けた後はファイルが自動的にクローズされているのがわかります。


なおファイルに対して何らかの処理を行っている最中にエラーが発生した場合でも、ファイルはきちんとクローズされます。 つまり以下のような構文と同じことを簡易的に記述できることになります。

# -*- coding: utf-8 -*- 


f = open('main.py')

try:
    
    #
    # 何らかの処理を行う
    #
    pass

except:
    pass

finally:
    f.close()



Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 

with文に対応するにはどうすれば?



確かな力が身につく
Python「超」入門




P  R