2017-01-28 8 views
0

自分のカメラから画像を処理し、ローカルマシンでリアルタイムに処理した後に情報を取得しようとしています。私はサーバ上でターミナル出力として必要な情報を得ることができますが、私のサーバプログラムが動作するまで、この情報をローカルマシンのPythonコードに入れることはできません。私はこのコードを試してみました:サーバからの端末出力のリアルタイム読み取り

cmd="sshpass -p 'pass' ssh -Y [email protected] -t 'process_image; bash -l'" 
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1) 
for line in iter(p.stdout.readline, b''): 
    print(line) 
    p.stdout.close() 
    p.wait() 

しかし、それは動作しません - このコードは私のプログラムを一時停止したようです。私は出力をファイルに書き込もうとしましたが、ローカルマシンからファイルを読み込みましたが、データが歪んでしまいました。サーバからの端末出力をリアルタイムで読み込むにはどうすればよいですか?

+0

'now = p.communicate()[0] .splitlines()'と次に 'for line in now:.....' – fedepad

+0

または単に 'for line in p.stdout:...'それはより良いかもしれない。 – fedepad

答えて

0

出力はあなたがbufsize=1を使用するため、ラインバッファリングされようとしているので、その後、あなただけ行うことができます:もちろん

cmd="sshpass -p 'pass' ssh -Y [email protected] -t 'process_image; bash -l'" 
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1) 
for line in p.stdout: 
    print(line) 
    ..... 

を、これはあなたのコマンドでは、あなたが期待する出力を与えている前提としています。

+0

はい、それは動作します、ありがとう! – Boris

関連する問題