2

Python でファイルを操作するためのベスト プラクティスは、次のwithブロックを使用することです。

with open('file', 'r') as fi:
 text = fi.read()

with open('file', 'w') as fi:
  fi.write(text)

このようにして、ファイルは、作業が完了した後に自動的に閉じられます。しかし、私は怠惰になり、簡単なワンショット スクリプトでは代わりに次のようにする傾向があります。

text = open('file', 'r').read()
open('file', 'w').write(text)

明らかに、Real Software™ を書いているのであれば、前者を使用する必要がありますが、後者がどのような結果をもたらすか (もしあれば) を知りたいですか?

4

1 に答える 1

6

CPython の場合: なし。ファイルは、参照カウントが 0 になったときに閉じられます。これは、.read()およびの.write()呼び出しが返された直後です。

参照カウントを使用しない他の Python 実装では、ファイルはガベージ コレクションされるまで開いたままになります。

于 2013-04-18T11:29:31.693 に答える