1. ホーム
  2. python

[解決済み] Python 3でexecfileの代替?[重複]です。

2022-02-10 19:32:37

質問

Python 2 では、ビルトイン関数である execfile Python 3.0 で削除されました。 この質問 は、Python 3.0 の代替品について議論していますが、いくつかの かなりの変更点 されました。 Python 3.0以降 .

に代わる最良の方法は何でしょうか? execfile はPython 3.2用、そして 将来のPython 3.xバージョン ?

解決方法は?

その 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)

を省略することができます。 globalslocals 引数で現在のスコープでファイルを実行するか、あるいは exec(code, {}) を使用すると、新しい一時的な辞書をグローバルとローカルの両方の辞書として使用し、効果的に新しい一時的なスコープでファイルを実行します。