使用exec用globals()在函数内执行文件

时间:2017-12-06 20:35:08

标签: python execfile

我需要在python shell中执行一个文件。

我可以

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

我已经传入了全局变量,但我仍然无法从exec访问varibales。 参考文献:

In Python, why doesn't an import in an exec in a function work?

How to execute a file within the python interpreter?

2 个答案:

答案 0 :(得分:0)

使用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

答案 1 :(得分:0)

所以这是一种方法

#x.py
def load(file):
    exec(open(file).read())
    return locals()

>>> import x
>>> var = x.load('Test.py')
>>> locals().update(var)
>>> C
>>> 10

希望有所帮助