PythonからC++プログラムを呼び出して引数を受け渡す方法
PythonとC++は、それぞれ異なるプログラミング言語ですが、両者を組み合わせて使用することで、Pythonの柔軟性とC++のパフォーマンスを組み合わせることができます。この記事では、PythonからC++プログラムを呼び出して引数を受け渡す方法について解説します。具体的には、Pythonのsubprocess
モジュールを使用してC++プログラムを実行し、引数を渡す方法について説明します。
Pythonのsubprocessモジュールについて
Pythonのsubprocess
モジュールは、外部プロセスを生成および制御するための機能を提供します。このモジュールを使用すると、Pythonから外部プログラムを呼び出したり、外部プログラムとの間でデータを受け渡したりすることができます。subprocess
モジュールは、Pythonの標準ライブラリに含まれており、追加のインストールは不要です。
C++プログラムの作成
まず、Pythonから呼び出すC++プログラムを作成します。以下は、簡単なC++プログラムの例です。このプログラムは、引数として文字列を受け取り、それを大文字に変換して出力します。
#include <iostream> #include <string> #include <algorithm> int main(int argc, char* argv[]) { if (argc != 2) { std::cerr << "Usage: " << argv[0] << " <string>" << std::endl; return 1; } std::string str = argv[1]; std::transform(str.begin(), str.end(), str.begin(), ::toupper); std::cout << "Upper case string: " << str << std::endl; return 0; }
このプログラムでは、argc
とargv[]
を使用してコマンドライン引数を受け取り、受け取った文字列を大文字に変換して出力しています。
PythonからC++プログラムを呼び出す
次に、Pythonから上記のC++プログラムを呼び出して、引数を受け渡す方法を見ていきましょう。以下のPythonコードは、subprocess
モジュールを使用してC++プログラムを呼び出し、引数として文字列を渡しています。
import subprocess def call_cpp_program(input_string): command = ["./cpp_program", input_string] result = subprocess.run(command, capture_output=True, text=True) if result.returncode == 0: print("C++プログラムの実行結果:", result.stdout) else: print("C++プログラムの実行中にエラーが発生しました:", result.stderr) # C++プログラムを呼び出す input_string = "Hello, World!" call_cpp_program(input_string)
このPythonコードでは、subprocess.run()
関数を使用してC++プログラムを実行しています。subprocess.run()
関数は、指定したコマンドを実行し、その結果を返します。capture_output=True
を指定することで、標準出力および標準エラー出力をキャプチャし、text=True
を指定することで、文字列として結果を受け取ります。
実行結果
上記のPythonコードを実行すると、以下のような出力が得られます。
C++プログラムの実行結果: UPPER CASE STRING: HELLO, WORLD!
これにより、PythonからC++プログラムを呼び出して、引数を受け渡すことができました。
まとめ
この記事では、PythonからC++プログラムを呼び出して引数を受け渡す方法について解説しました。subprocess
モジュールを使用することで、PythonとC++を組み合わせてプログラムを開発する際に柔軟性が向上します。Pythonの柔軟性とC++のパフォーマンスを組み合わせて、より効率的なプログラムを開発するために、この方法を活用してみてください。