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?

Original source

Related problems