0

我需要在 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 访问变量。参考:

在 Python 中,为什么函数中的 exec 中的导入不起作用?

如何在 python 解释器中执行文件?

4

2 回答 2

0

所以这是一种方法

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

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

希望能帮助到你

于 2017-12-06T20:52:04.977 回答
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
于 2017-12-06T20:36:36.487 回答