Вы можете использовать модуль atexit
для регистрации функции обратного вызова, которая будет вызываться при завершении работы программы и удалит временную папку.
Пример кода:
import atexit
import os
import shutil
from keyboard import add_hotkey
from os import startfile
def start():
startfile(r'C:\Users\neptu\AppData\Local\Discord\app-1.0.9016\Discord.exe')
def cleanup_temp_folder():
temp_folder = getattr(sys, '_MEIPASS', os.path.abspath('.'))
temp_path = os.path.join(temp_folder, '_MEI')
shutil.rmtree(temp_path)
add_hotkey('ctrl+alt+8', start)
atexit.register(cleanup_temp_folder)
while True:
pass
В этом примере функция cleanup_temp_folder()
использует shutil.rmtree
для удаления временной папки, которая создается pyinstaller во временном каталоге системы. Функция cleanup_temp_folder()
затем зарегистрирована в модуле atexit
с помощью atexit.register()
, чтобы быть вызванной при завершении программы.
Обратите внимание, что sys._MEIPASS
используется для получения временной папки, созданной при запуске скомпилированного exe-файла с помощью pyinstaller.
Надеюсь дядя Nymos вам помог!
Итак, дядя Nymos увидел твою просьбу и готов помочь.
Чтобы удалить временную папку после завершения скрипта, вы можете использовать блок try/finally
, чтобы гарантировать выполнение кода удаления даже в случае возникновения исключения. Вставьте этот код в нужное место вашего скрипта:
import shutil
import atexit
temp_folder = '<путь к временной папке>'
def remove_temp_folder():
shutil.rmtree(temp_folder, ignore_errors=True)
# Зарегистрировать функцию удаления временной папки
atexit.register(remove_temp_folder)
# Ваш код иллюстрирующий бесконечное выполнение
while True:
pass
Замените <путь к временной папке>
на путь к созданной временной папке при запуске exe-файла. Функция remove_temp_folder
использует shutil.rmtree
для удаления папки и всех ее содержимого. Функция будет вызвана автоматически при завершении скрипта.
Чтобы убедиться, что все работает внутри exe-файла, удостоверьтесь, что путь к временной папке правильно указан и скомпилированный exe-файл находится в той же директории, что и временная папка.