私は一時ディレクトリを使用しており、プログラムが終了したときに (プログラムが成功したかどうかに関係なく) 確実に削除されるようにしたいと考えています。私はtempfile.mkdtemp
ディレクトリを作成するために使用しており、作成された文字列をそのコマンドstr
でディレクトリを削除するサブクラスに入れています:__del__
import shutil
import tempfile
class TempDir(str):
""" container for temporary directory.
Deletes directory when garbage collected/zero references """
def __del__(self):
shutil.rmtree(self.__str__(), onerror=my_error_fn)
dbdir = TempDir(tempfile.mkdtemp())
ここに私が確信していないことがあります: プログラムが終了するか、KeyboardInterrupt が発生した場合、Python はすべての変数を自動的に削除/ガベージ コレクションしますか? そうでない場合、ディレクトリが削除されたことを確認するにはどうすればよいですか?
Python でのデストラクタ メソッドの作成に関する関連情報。TempDir オブジェクトが他に何も参照していない限り、それ__del__
を破壊するために使用しても問題ないようです。