home changes contents help options

266:ファイルをPythonスクリプトとしてロードする

execfile 関数を用います。現在のスコープで実行されます。

# hello.txt
def hello():
    return 'Hello World.'
>>> execfile('hello.txt')
>>> hello()
'Hello World.'

閉じた環境を用意する場合、 globals 第 2 引数、 locals 第 3 引数に名前空間代わりとなる辞書を渡します。

>>> G = {}
>>> L = {}
>>> execfile('hello.txt', G, L)
>>> hello()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'hello' is not defined
>>> L['hello']()
'Hello World.'

関連