Используйте 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. Рекомендации:

В Python почему не работает импорт в exec в функции?

Как выполнить файл в интерпретаторе Python?

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
Другие вопросы по тегам