该2to3
脚本内容替换
execfile(filename, globals, locals)
通过
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
和locals
参数以在当前范围内执行文件,或用于exec(code, {})
将新的临时字典用作全局和本地字典,从而在新的临时范围内有效地执行文件。