AS
suggested on the python-dev
最近的邮件列表
runpy
模块可能是一个可行的替代方案。引用该消息:
https://docs.python.org/3/library/runpy.html#runpy.run_path
import runpy
file_globals = runpy.run_path("file.py")
有细微的差别
execfile
:
-
run_path
总是创建一个新的命名空间。它以模块的形式执行代码,因此全局变量和局部变量之间没有区别(这就是为什么只有
init_globals
参数)。返回全局。
执行文件
在当前命名空间或给定命名空间中执行。语义学
locals
和
globals
,如果给定,则类似于类定义中的局部变量和全局变量。
-
运行路径
不仅可以执行文件,还可以执行鸡蛋和目录(有关详细信息,请参阅其文档)。