Ce ne sera pas si simple. 1) Lorsque vous exécutez le script, c'est python.exe qui exécute les instructions et le fichier script (test.py) est gratuit. De cette façon, python.exe peut supprimer le script. 2) Lorsque vous convertissez convertir votre script en exe, c'est le fichier exe lui-même en cours d'exécution, ce qui signifie que le fichier est 'occupé', ou dit en d'autres termes - utilisé par le processus, et ne peut pas être supprimé.
Trouver un moyen de démarrer un autre processus qui supprimerait le fichier après avoir quitté le processus en cours.
Edit (exemple de code):
import sys
import ctypes
import platform
import subprocess
def execute(command, async=False): """ if async=False Executes a shell command and waits until termination and
returns process exit code if async=True Executes a shell command without waiting for its termination and returns subprocess.Popen object On Windows, does not create a console window. """ if async: call = subprocess.Popen else: call = subprocess.call
if platform.system() == 'Windows':
# the following CREATE_NO_WINDOW flag runs the process without
# a console window
# it is ignored if the application is not a console application
return call(command, creationflags=0x08000000)
else:
return call(command)
def main():
ctypes.windll.user32.MessageBoxA(0, __file__, 'Show path', 0) ctypes.windll.user32.MessageBoxA(0, sys.executable, 'sys.executable', 0) with open(r'D:\delete_me.py', 'w') as f: f.write('import os\n') f.write('import time\n') f.write('time.sleep(2)\n') f.write('os.remove(r"{}")'.format(sys.executable)) execute(r'C:\Python27\python.exe D:\delete_me.py', async=True)
si __name__ == '__main__': main()
Et cela a été compilé avec `pyinstaller.exe --onefile --windowed D: \ self_delete.py
exécuter la fonction est un peu chose que nous utilisons pour exécuter des appels sur Linux et Windows et je viens de le copier. C'est pourquoi la vérification de la plateforme est là. Vous pouvez utiliser un fichier .bat avec timeout au lieu de veille ou tout ce que vous voulez si vous ne pouvez pas exécuter delete_me.py
Possible dupliquer de [Comment un programme peut supprimer son propre exécutable] (http: // stackoverflow. com/questions/1606140/how-can-a-program-delete-its-own-executable) –