Потоковые данные в stdin; запретить ввод данных пользователем - PullRequest
0 голосов
/ 15 марта 2012

Использование Python 2.7

Положение: У меня есть кусок кода Python (который отправил пользователь), который мне нужно выполнить на моем сервере (работает на Django) и вернуть результат. (Не беспокойтесь об угрозе безопасности, сначала нужно пройти контрольную точку безопасности).

Предположим, что код Python хранится в переменной newCode

Я делаю следующее:

code = compile(newCode, '<string>', 'exec')
exec code

Теперь предположим, что кусок newCode был:

a = raw_input('wa ')
print a

В этот момент сервер остановится.

Входные данные для любой программы хранятся в базе данных. Он должен читать данные из базы данных и подключаться к программе при вызове input или raw_input. Процесс ввода должен быть автоматизирован.

Любой способ потоковой передачи входных данных в stdin перед запуском exec и он прочитал его во время выполнения?

Пожалуйста, помогите! Заранее спасибо. :)

1 Ответ

0 голосов
/ 15 марта 2012

Заменить sys.stdin на StringIO, содержащий текст для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...