The execfile fixer of the 2to3 script replaces the 2.x code
execfile("a.py")
by
exec(compile(open("a.py").read(), "a.py", 'exec'))
The new code does not explicitly close the file. This is not usually a problem in CPython, but
1. the code will throw a RessourceWarnings if enabled and
2. other Python implementation don't close the file immediately.
(I think the 2to3 script should be as implementation-independent as possible.)
The obvious fix would be to use a with-statement:
with open("a.py") as new_name:
exec(compile(new_name.read(), "a.py", 'exec'))
If this is to be changed, I'd be happy to prepare a patch. |