[英]Use exec to execute a file inside a function with globals()
我需要在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访问变量。 参考文献:
改用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
所以这是一种方法
#x.py
def load(file):
exec(open(file).read())
return locals()
>>> import x
>>> var = x.load('Test.py')
>>> locals().update(var)
>>> C
>>> 10
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.