2012-01-15 13 views

答えて

6

Pythonのガベージコレクタは、開いているファイルオブジェクトを最後に使用した後にそのファイルオブジェクトをクリーンアップします(これはすぐにもそうでなくてもかまいません)。

with open(filename, 'r') as f: 
    lines = len(f.readlines()) 

with open(filename, 'w') as f: 
    f.writelines(lines) 

標準のCPython実装では参照カウントが使用されるため、オブジェクトを非常に素早くクリーンアップする傾向があります。ただし、IronPythonなどの他の実装では、ガベージコレクションが異なる方法で処理され、同じ動作をすることはありません。

1

CPythonでは、参照カウントによってファイルがすぐに閉じられます。他のバージョンのPythonでは、定期的なガベージコレクタが動作するまで開いています。

関連する問題