2016-04-09 2 views
1

私のdjango pythonスクリプトで私の.cppプログラムを実行します。私は標準出力(cout)をC++で、Pythonのサブプロセスで取得したいと考えています。 C++では、私のすべての拍子をバッファリングしてmain()で返すストリームを作成しようとしましたが、main関数で返すことができる唯一の値はintegerです。 だから私の質問です:他の方法で値にPythonでC++の叫びをキャプチャする他の可能性はありますか?前もって感謝します!私はC++からcoutsを含む出力ファイルを与え、私は、前に使用し、以下の行を呼び出すことだった私のpythonscriptのサブプロセスでC++をキャプチャしました

command = 'g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '"' 
process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) 
output = process.communicate() 
print output 

他の可能性、:

は私がでpopenを使用してみました。 python3で

os.system('g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '" -o mutualout') 
+0

実行するPythonのバージョン – Ben

+0

私のバージョンは2.7.6です – theCember

答えて

1

、サブプロセスからstdoutをつかむための最も簡単な方法は、subprocess.getoutputを使用することです:

import subprocess 
output = subprocess.getoutput('ls ./my_folder') 
print(output) 

この方法は、Python3.5に置き換えられており、推奨される方法は以下のようになります。

result = subprocess.run(['ls', './my_folder'], stdout=subprocess.PIPE) 
print(result) 
print(result.stdout) 

stdoutを文字列にすることもできます。

result_string = result.stdout.decode('utf-8') 
関連する問題