@Krill1927

Как EXE-шнику удалить самого себя (Python)?

Мне нужно написать программу которая после исполнения удалит сама себя.
Как можно это сделать?
Я написал небольшой код.
Но стоит мне его скомпилить в EXE-шник и он не работает.

Код:
import os
a = __file__
a1 = []
for i in a:
    a1.append(i)

del a1[-2::]
a = ''
for i in a1:
    a += str(i)

a += 'exe'
del a1

os.remove(a)


Ошибка:
Traceback(most recent call last):
    File "test.py" line 15, in (module)
FileNotFoundError: [WinError2] Не удается найти указанный файл: 'test.exe'
[2204] Failed to execute script test
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 6
А вы посмотрите какой путь этот a = __file__ выводит, есть подозрение что exe распаковывает все во временную папку и оттуда запускает, ну и соответственно полный путь вы получаете к той папке.
Ответ написан
@snamef
может полный путь указывать надо
Ответ написан
sanya84
@sanya84
Фанатик Python 3
import os

path_exe = os.path.abspath(__file__).replace('py', 'exe')
print(path_exe)

try:
    os.remove(path_exe)
except FileNotFoundError as error:
    print(error)
except PermissionError as error:
    print(error)
Ответ написан
@kisaa
Сам себя просто так он не удалит - винда не позволит. Гуглите (delete application from self) обходные пути. Вот нашёл пример для C#:
https://stackoverflow.com/questions/1305428/self-d...
Ответ написан
Ternick
@Ternick
python не компилируемый, а интерпретируемый !
Когда вы на стадии скрипта это пытаетесь сделать то скорее всего у вас получается это потому что python прочитал файл и закрыл его, а затем исполняет инструкции из скрипта.

<СОВЕТ>:
Странные у вас методы для получения имени файла:
Почему бы не использовать это:
from sys import argv
argv[0]#Имя файла, но в live режиме просто "".

Решение вашей проблемы:
1)
1.1)Это можно сделать через .bat как я думаю :)
1.2)Для начала убить процесс, а затем удалить файлы :)
Гайд по cmd:
https://ab57.ru/cmdlist.html
2)
Другим приложением :)
С теми же пунктами :)
Ответ написан
@Dsibe
https://pastebin.com/EyPiHFNp
Проверил pyinstaller-ом. Только пробелов в имени файла не должно быть.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы