Как сынтерпретировать сообщение от пользователя python

Пишу телеграмм-бота на Python через telebot. Этот бот должен будет интерпретировать код, который пришлет пользователь. Вот так выглядит функция, интерпретирующая код:

def interpreter(message):
    file = open('programmes.py', 'w', encoding='UTF-8')
    file.write(message.text)
    file.close()

    conclusion = os.system('programmes.py')

    bot.send_message(message.chat.id, conclusion)

При запуске в консоль выводится вывод кода ( например: Код: print(5+5) | Вывод: 10 ). А бот высылает пользователю цифру 0. Независимо оттого, какой код. Будь то: a = 5 или print(4-3). Та самая функция

Вот, что присылает бот, при выполнении кода


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

Автор решения: nomnoms12

Функция os.system возвращает код завершения программы. Код 0 означает, что программа завершилась без ошибок.

Для выполнения произвольного кода и получения результатов, есть функции exec, eval и модуль ast.

Пример:

code = '9*8'
result = eval(code)
print(result)        # 72


Но я Вам крайне не советую исполнять произвольный код от пользователей. Это может привести к компрометации всей системы.

→ Ссылка