HOWTO · Python

Python 別の Python スクリプトを実行する

このチュートリアルでは、Python スクリプトを別の Python スクリプトで実行する方法を示します

このページの内容

クライアントが直接実行することを目的とした Python コードを含む基本的なテキストファイルは、通常、スクリプトと呼ばれ、正式にはトップレベルプログラムファイルと呼ばれます。

スクリプトは、Python で直接実行することを目的としています。スクリプトとコードの実行を学ぶことは、Python プログラミングの世界で学ぶための基本的なスキルです。Python スクリプトには通常、拡張子'.py'が付いています。スクリプトを Windows マシンで実行する場合、拡張子は .pyw である可能性があります。

このチュートリアルでは、別の Python スクリプト内で Python スクリプトを実行するためのさまざまな方法について説明します。

別の Python スクリプトで import ステートメントを使用して Python スクリプトを実行する

import ステートメントは、Python コードにいくつかのモジュールをインポートするために使用されます。モジュールから特定のコードにアクセスするために使用されます。このメソッドは、import ステートメントを使用してスクリプトを Python コードにインポートし、それをモジュールとして使用します。モジュールは、Python の定義とステートメントを含むファイルとして定義できます。

次のコードは、import ステートメントを使用して、別の Python スクリプトで Python スクリプトを実行します。

  • Script1.py:
def func1():
    print("Function 1 is active")


if __name__ == "__main__":
    # Script2.py executed as script
    # do something
    func1()

出力:

Function 1 is active
  • Script2.py:
import Script1.py


def func2():
    print("Function 2 is active")


if __name__ == "__main__":
    # Script2.py executed as script
    # do something
    func2()
    Script1.func1()

出力:

Function 2 is active
Function 1 is active

別の Python スクリプトで execfile() メソッドを使用して Python スクリプトを実行する

execfile() 関数は、インタープリターで目的のファイルを実行します。この関数は Python 2 でのみ機能します。Python 3 では、execfile() 関数が削除されましたが、Python 3 でも exec() メソッドを使用して同じことが実現できます。

次のコードは、execfile() 関数を使用して、別の Python スクリプトで Python スクリプトを実行します。

  • Script2.py:
# Python 2 code
execfile("Script1.py")

出力:

Function 1 is active

Python 3 でも、次を使用して同じことができます。

  • Script2.py:
exec(open("Script1.py").read())

出力:

Function 1 is active

別の Python スクリプトで subprocess モジュールを使用して Python スクリプトを実行する

subprocess モジュールは、新しいプロセスを生成することができ、それらの出力を返すこともできます。これは新しいモジュールであり、以前は別の Python スクリプトで Python スクリプトを実行するために使用されていた os.system などの古いモジュールを置き換えることを目的としています。

次のコードは、subprocess モジュールを使用して、別の Python スクリプトで Python スクリプトを実行します。

  • Script1.py:
def func1():
    print("Function 1 is active")


if __name__ == "__main__":
    # Script2.py executed as script
    # do something
    func1()
  • Script2.py:
import subprocess

subprocess.call("Script1.py", shell=True)

出力:

Function 1 is active

3つの方法はすべて問題なく機能しますが、この方法は他の 2つの方法よりも優れています。このメソッドでは、既存の Python スクリプトを編集し、それに含まれるすべてのコードをサブルーチンに入れる必要はありません。