The 2to3
脚本替换
execfile(filename, globals, locals)
by
exec(compile(open(filename, "rb").read(), filename, 'exec'), globals, locals)
这似乎是官方的建议。您可能想使用with
阻止以确保文件立即再次关闭:
with open(filename, "rb") as source_file:
code = compile(source_file.read(), filename, "exec")
exec(code, globals, locals)
您可以省略globals
and locals
在当前范围内执行文件的参数,或使用exec(code, {})
使用新的临时字典作为全局和本地字典,在新的临时范围中有效地执行文件。