私は3つの値の結果を評価するC++プログラムを作成しています。複数の出力をC++アプリケーションから返す
このアプリケーションをPythonスクリプトで呼びたいと思います。これらの値は、これらの値を受け取る必要があります。
問題は、C++のmain関数は1つの整数値だけを返すことです。
この問題を解決するにはどうすればよいですか?
ありがとうございます!
私は3つの値の結果を評価するC++プログラムを作成しています。複数の出力をC++アプリケーションから返す
このアプリケーションをPythonスクリプトで呼びたいと思います。これらの値は、これらの値を受け取る必要があります。
問題は、C++のmain関数は1つの整数値だけを返すことです。
この問題を解決するにはどうすればよいですか?
ありがとうございます!
中間値をファイルに保存するか、stdout
にC++コードで書き込むことができます。今のpython使用subprocess.Popen
でのC++のコードを実行し、PIPE
を使用してstdout
をキャプチャする
#include <iostream>
int main()
{
std::cout << "param1,param2,param3\n";
}
。
from subprocess import Popen, PIPE
process = Popen('./nameofyourexe', stdout=PIPE, stderr=PIPE)
output, err = process.communicate()
if process.returncode == 0:
print(output.decode().strip().split(','))
else:
print('error: %s' % err.decode())
3つのパラメータをどの形式で出力するかはあなた次第です。私はそれらをすべて同じ行に置き、カンマで区切り、単にsplit
をpythonコードに入れます。あなたのニーズに応じて、それを違う方法で選ぶこともできます。
C++をコンパイルしてpythonを同じディレクトリから実行した後。私は、現在のディレクトリからプログラムを実行するために'./nameofyourexe'
(./
接頭辞)を使用
:出力は注意
['param1', 'param2', 'param3']
です。これはウィンドウズ(私はLinux上にある)や現在のものとは別のディレクトリから実行すると動作しないかもしれません。この問題を回避するには、cwd
パラメータをPopen
に渡して、exeを含むディレクトリを指定します。
stdoutまたはstderrを使用して、https://stackoverflow.com/questions/2502833/store-output-of-subprocess-popen-call-in-a-stringの1つの方法について説明します。 – jodag
mainからの結果を返すことは、*プログラムの終了ステータスではなく、悪い考えです。 – StoryTeller