@Simon440-png
Beginner python developer

Как реализовать выполнение функции после завершения процесса?

написал telegram бота, который принимает файл от пользователя, сохраняет, загружает его на сервер и дальше должен удалить файл, но выводится ошибка
PermissionError: [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом: 'files/Новый текстовый документ.txt'
Как я понял, в момент, когда файл загружается на сервер, я пытаюсь его удалить и из-за этого возникает конфликт. Код, отвечающий за эти действия:
def upload(message):
    user_file[message.chat.id] = message.document.file_name
    file_info = bot.get_file(message.document.file_id)
    downloaded_file = bot.download_file(file_info.file_path)

    src = 'files/' + message.document.file_name;
    with open(src, 'wb') as new_file:
            new_file.write(downloaded_file)
    
    c.upload_attachment(sentik, file_path=f'files/{user_file[message.chat.id]}')
    os.remove(f'files/{user_file[message.chat.id]}')

Загрузка выполняется на сервер другого приложения путём стороннего API. Как можно реализовать выполнение функции
os.remove() после завершения процесса выгрузки на сервер?
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
@Simon440-png Автор вопроса
Beginner python developer
Решение оказалось довольно простым. После записи файла
(new_file.write(downloaded_file)) его стоило закрыть, используя new_file.close()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы