「デストラクタ」とは、__del__
メソッドを意味します。 the docs on del
から
は、デル()メソッドは、インタプリタが終了まだ存在するオブジェクトのために呼ばれていることを保証するものではありません。
atexitハンドラを登録するとよいでしょう。例えば
は、モジュールレベルで:インタプリタは関係なく、どのように通訳の終了の終了時のatexitで登録
import atexit
def cleanup_directories():
directories = ["C:\\projects\\project_alpha\\tmp",]
for path in directories:
if os.path.exists(path) and os.path.isdir(path):
shutil.rmtree(path)
atexit.register(cleanup_directories)
機能が実行されます。もちろん
、あなたも実行するために、あなたのデル方法を強制するような(import gc; gc.collect()
を実行するために、ガベージコレクタを強制ハック何かを行うことができますが、私はここに手足に出て行って、それが悪いと言うつもりですアイデア。
;-)
「機能しない」とはどういう意味ですか?あなたはエラーが発生しますか?あなたは何のエラーもなく、何も削除されません? –
問題が__del__メソッドが呼び出されていないと仮定すると、私の答えが役立ちます。それ以外の場合は、コードの関連部分を投稿する必要があります。 – stderr