for line in open("processes.txt").readlines():
doSomethingWith(line)
そのコードを例に取ります。close() を呼び出すものは何もありません。それで、それは自動的に閉じますか?
for line in open("processes.txt").readlines():
doSomethingWith(line)
そのコードを例に取ります。close() を呼び出すものは何もありません。それで、それは自動的に閉じますか?
対応するオブジェクトの割り当てが解除されると、ファイルは閉じます。あなたが与えるサンプルはそれに依存します。オブジェクトへの参照がないため、オブジェクトが削除され、ファイルが閉じられます。
注意すべき重要な点は、オブジェクトがいつ削除されるかについては保証されていないということです。CPythonでは、メモリ管理の基礎として参照カウントがあるため、ファイルがすぐに閉じることが期待されます。たとえば、Jythonでは、ガベージコレクターが特定の時間に(またはまったく)実行されることが保証されていないため、ファイルが閉じられていることを期待せず、代わりに手動でファイルを閉じるか、(より適切に)with
ステートメントを使用する必要があります。 。
私の知る限り、そうではありません。自動クローズを行うには、次のようなコンテキスト マネージャーを使用する必要があります。with
オブジェクト自体はガベージ コレクションによって再利用されて閉じられる場合がありますが、ガベージ コレクションが発生する明確な時間はありません。
with open("processes.txt") as openfile:
<do stuff>