Alternative to execfile in Python 3?
execfile, import, python, python-3.x
Solution
The `2to3` script replaces
execfile(filename, globals, locals)
by
exec(compile(open(filename, "rb").read(), filename, 'exec'), globals, locals)
This seems to be the official recommendation. You may want to use a `with` block to ensure that the file is promptly closed again:
with open(filename, "rb") as source_file:
code = compile(source_file.read(), filename, "exec")
exec(code, globals, locals)
You can omit the `globals` and `locals` arguments to execute the file in the current scope, or use `exec(code, {})` to use a new temporary dictionary as both the globals and locals dictionary, effectively executing the file in a new temporary scope.
Problem
Python 2 had the builtin function `execfile`, which was removed in Python 3.0. This question discusses alternatives for Python 3.0, but some considerable changes have been made since Python 3.0. What is the best alternative to `execfile` for Python 3.2, and future Python 3.x versions?