私は通常使用します:
f = open(path,'w')
print >> f, string
f.close()
しかし、私は他のコードで見ました:
print >> open(path,'w'), string
もうまくいきます。
それで、'print' で開いたファイルを閉じる必要はありませんか?
はい、ファイルを閉じる必要があります。printとの違いはありません。
ファイルを閉じると、データがディスクにフラッシュされ、ファイル ハンドルが解放されます。
CPython では、 fの参照カウントがゼロになると、システムがこれを行います。PyPy、IronPython、および Jython では、ガベージ コレクターが実行されるまで待機する必要があります (ファイルを自動的に閉じるため)。メモリ マネージャーによる自動クローズに依存する脆弱な慣行を採用するのではなく、ファイルのクローズを制御することをお勧めします。
ファイルを明示的に閉じることはベスト プラクティスであるため、Python ではファイル オブジェクト用のコンテキスト マネージャーが提供されており、これにより非常に簡単になります。
with open(path, 'w') as f:
print >> f, string
これにより、 with-statementの本体を離れるとファイルが閉じられます。