サブプロセスを開始し、完了するまで待ってから必要なデータを取得するために、いくつかのpythonスクリプトを取得するのが苦労しています。私はPythonの新機能です。サブプロセスを開始し、完了するのを待ち、Pythonでデータを取得します。
in terminal mode
Evaluation error = 16.7934
は、私はPythonのサブとしてコマンドを実行したい:
私はサブプロセスとして実行したいコマンドは、Linux端末に手でそのコマンドを実行する
./bin.testing/Eva -t --suite="temp0"
が生成されます処理し、出力を受け取る。
def job(self,fen_file):
from subprocess import Popen, PIPE
from sys import exit
try:
eva=Popen('{0}/Eva -t --suite"{0}"'.format(self.exedir,fen_file),shell=True,stdout=PIPE,stderr=PIPE)
stdout,stderr=eva.communicate()
except:
print ('Error running test suite '+fen_file)
exit("Stopping")
print(stdout)
.
.
.
return 0
このすべてが生産するようだが
in terminal mode
0
次のとおりです。しかし、私がしようすべては現時点で(。最終的に、それは私が欲しい二行目だ)二行目を飛ばしているようだ、私はこれを持っています
に重要な行がありません。 print文はちょうど私がサブプロセスから戻ってくるものを見ることができるので、2行目の数値を処理して出力を返すコードに置き換えられます0この関数の呼び出し側は結果を出力します。なぜなら、出力の最後にゼロがあるからです。)exedirはサブプロセス用の実行可能ファイルのディレクトリです、fen-fileは、サブプロセスに必要なasciiファイルです。私は、サブプロセスのソースコードから '端末モードで'を削除して再コンパイルしようとしましたが、それは動作しません - それでも重要な第2行は返されません。
ありがとうございます。私が間違ってやっていることが本当にとても簡単だと思います。
編集:サブプロセスのEvaが完了するまでに2〜2時間かかります。
@ppyvabwあなたが知っているのは、 '' - '' 0 '''だったかもしれない - あなたが '='を忘れていたとは言いませんでしたが、 – rrauenza