Компиляция строки с использованием Python (не работает) в командной строке Linux

Я пытаюсь сделать что-то для проекта, на который я не могу найти ответ после поиска и пробую другой код.

Я пытаюсь получить строку от клиента (отправленную по почте, и я должен использовать этот метод, приказы учителя), а затем скомпилировать эту строку, используя exec () в файле php. По сути, я «оцениваю» фрагмент кода Python, отправленный мне в виде строки. Я также делаю это на сервере файловой системы Andrew (afs).

Я не очень разбираюсь в python, в основном использую другие языки, но я могу сделать исполняемый файл python с помощью php exec, а также просто скомпилировать его с помощью cython (это то, что есть на машинах linux в нашей школе, не уверен, стоит ли мне это делать использовать этот). Я получил это для работы с файлами.

Моя проблема в том, что я не могу просто скомпилировать строку без ее запуска. я могу сделать

python -c "print('Hello World')" просто выполнить строку где «печать («Hello World»)«будет строковой переменной php

но я не уверен, как просто проверить синтаксические ошибки.

Я старался python -m py_compile -c "print('Hello World')"но это не нравится тому, что похоже на -m на py_compile не любит строки, только файлы

Таким образом, помимо создания нового файла .py для каждой строки, которую отправляет мне клиент, и работы над этим, есть лучший способ без создания новых файлов или создания отдельного скрипта Python для обработки этого. Я пытаюсь сделать это в одном файле PHP. Это может быть большой ноно, выполняющий скрипты командной строки python для строк, так что я мог бы также спросить.

0

Решение

Вы можете использовать модуль синтаксического анализа. Напишите такой скрипт:

import sys
import parserdata = sys.argv[1]

try:
parser.suite(data)
except SyntaxError as e:
print(e)

Вызывать как это

python3.6 /tmp/test.py "import math"
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]