lines = len(open(filename, 'r').readlines()) //or
open(filename, 'w').writelines(lines)
この行はPythonで開いているファイルを閉じますか?どの変数にも割り当てられていないファイルを閉じる方法でない場合また、これらのタイプのコーディングは、それが "refcounting semantics"ですか?ファイルが閉じているか、まだメモリに残っていますか?
lines = len(open(filename, 'r').readlines()) //or
open(filename, 'w').writelines(lines)
この行はPythonで開いているファイルを閉じますか?どの変数にも割り当てられていないファイルを閉じる方法でない場合また、これらのタイプのコーディングは、それが "refcounting semantics"ですか?ファイルが閉じているか、まだメモリに残っていますか?
Pythonのガベージコレクタは、開いているファイルオブジェクトを最後に使用した後にそのファイルオブジェクトをクリーンアップします(これはすぐにもそうでなくてもかまいません)。
with open(filename, 'r') as f:
lines = len(f.readlines())
with open(filename, 'w') as f:
f.writelines(lines)
標準のCPython実装では参照カウントが使用されるため、オブジェクトを非常に素早くクリーンアップする傾向があります。ただし、IronPythonなどの他の実装では、ガベージコレクションが異なる方法で処理され、同じ動作をすることはありません。
CPythonでは、参照カウントによってファイルがすぐに閉じられます。他のバージョンのPythonでは、定期的なガベージコレクタが動作するまで開いています。