Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

Pythonにおける外部Pythonプログラムの実行と引数の受け渡し

LYPプレミアム会員 python

Pythonにおける外部Pythonプログラムの実行と引数の受け渡し

Pythonプログラミングにおいて、他のPythonプログラムを呼び出して実行することは、様々なシナリオで必要とされます。subprocessモジュールを使用すると、外部のPythonスクリプトを効果的に実行できます。この記事では、subprocessモジュールを用いて他のPythonプログラムを実行し、かつ5つの引数を受け渡す方法に焦点を当てます。実際のコード例と実行結果を通じて、手順を詳細に解説していきます。

1. subprocessモジュールの概要

subprocessモジュールは、外部プロセスを作成、実行、および制御するためのPythonの標準ライブラリです。これを使用することで、他のPythonスクリプトや外部プログラムを呼び出すことができます。具体的には、subprocess.run()関数を使って外部プログラムを呼び出します。

2. サンプルPythonプログラムの作成

まず、外部から呼び出すサンプルのPythonプログラムを作成します。このプログラムは、与えられた引数の数とそれぞれの引数を表示するものです。以下がそのコードです。ファイル名はsample_program.pyとします。

# sample_program.py

import sys

def main():
    # 引数の数を表示
    print(f"引数の数: {len(sys.argv) - 1}")

    # 引数を表示
    for i, arg in enumerate(sys.argv[1:], start=1):
        print(f"引数{i}: {arg}")

if __name__ == "__main__":
    main()

3. subprocessモジュールを使用して実行

次に、先程作成したサンプルプログラムをsubprocessモジュールを使って実行するPythonコードを見ていきましょう。5つの引数を指定します。

import subprocess

def run_external_program():
    try:
        # 実行したいPythonプログラムのファイルパス
        program_path = 'path/to/sample_program.py'

        # サンプル引数
        sample_args = ['arg1', 'arg2', 'arg3', 'arg4', 'arg5']

        # subprocess.runを使ってプログラムを実行
        result = subprocess.run(['python', program_path] + sample_args, capture_output=True, text=True)

        # 実行結果を表示
        print("標準出力:")
        print(result.stdout)

        print("\n標準エラー出力:")
        print(result.stderr)

        # 実行結果の戻り値(0は正常終了)
        print("\n戻り値:", result.returncode)

    except Exception as e:
        print(f"エラーが発生しました: {e}")

if __name__ == "__main__":
    run_external_program()

このコードでは、subprocess.run()関数を使用して外部のPythonプログラムを呼び出しています。また、引数としてsample_argsに5つのサンプル引数を指定しています。

4. 実行結果の確認

上記のコードを実行すると、指定したPythonプログラムが実行され、その結果が表示されます。以下はサンプルの実行結果です。

標準出力:
引数の数: 5
引数1: arg1
引数2: arg2
引数3: arg3
引数4: arg4
引数5: arg5

標準エラー出力:

戻り値: 0

このように、subprocessモジュールを使用して他のPythonプログラムを実行し、かつ引数を受け渡すことができました。これにより、異なるプログラム同士の連携やデータ処理の自動化が容易になります。これらの手法を活かして、プログラムのモジュール化や外部システムとの連携を実現しましょう。