Найти - Пользователи
Полная версия: Удаленное исполнение строки
Начало » Python для новичков » Удаленное исполнение строки
1
ahpex
Добрый день! Столкнулся с проблемой. Пользователь вводит пример кода на питоне, который сохраняется в базе данных в виде строки.
Например.
"""
def test():
	r = 5
	pi = 3.14
	s = pi*r^2
	return s
test()
""""

Программа берет строку из БД. Далее нужно воспроизвести данный код на сервере и вернуть результат в БД. Какими средствами это можно реализовать?
Нашел функции eval и exec, но что то у меня с ними не складывается. Точнее понятно все более-менее, но не понятно почему не возвращается значение.
Например после выполнения возвращается None.. Что я делаю не так и как это сделать более-менее по уму? Заранее спасибо!
a = """
def test():
	r = 5
	s = r*r
	return s
test()
"""
print (exec(a))
doza_and
a = """
def test():
    r = 5
    s = r*r
    return s
cc=test()
"""
exec(a)
print cc
exec ничего не возвращает смотрите внимательнее документацию.
ahpex
спасибо. Тогда не подскажете, как мне все же доставать конечный результат без внесения изменений в исходный код?
sanodin
a = """
def test():
    r = 5
    s = r*r
    return s
cc=test()
"""
def do():
    c=a.lstrip("'''")
    b=c.rstrip("'''")
    exec(b)
    return cc
print do()
sanodin
a = """
def test():
    r = 5
    s = r*r
    return s
cc=test()
"""
code_obj = compile(a, '<string>', 'exec')
exec(code_obj)
print cc

отсюда
http://python-lab.blogspot.com/2012/05/exploring-python-code-objects.html
http://python-lab.blogspot.com/2012/05/exec-pythona.html
ahpex
Разобрался. Тему можно закрывать.
Решение нашел здесь.
Shaman
ahpex
Можно ли каким то образом извлечь результат (в дан. случ. - 25) не прибегая к внесению переменных и тд.?
Невозможно, т.к. он нигде не сохраняется.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB