Используйте exec для выполнения файла внутри функции с помощью globals()
Мне нужно выполнить файл внутри оболочки Python.
Я могу
exec(open('Test.py').read())
Но мне нужно вызвать его изнутри функции.
"Test.py" установит переменную C=10
Так,
#x.py
def load(file):
exec(open(file).read(),globals())
>>> import x
>>> x.load('Test.py')
>>> C
>>> NameError: name 'C' is not defined
Я прошел в глобальных, но я все еще не могу получить доступ к varibales из exec. Рекомендации:
2 ответа
Так вот один из способов сделать это
#x.py
def load(file):
exec(open(file).read())
return locals()
>>> import x
>>> var = x.load('Test.py')
>>> locals().update(var)
>>> C
>>> 10
Надеюсь, поможет
Использование import
вместо
from Test import C
print C
РЕДАКТИРОВАТЬ:
Если Test.py находится в другом каталоге, вы должны изменить sys.path
import sys.path
sys.path.insert(0, "path_to_directory")
from Test import C
print C