私が書いているPyQt GUIアプリで単純な(Windows)コマンドラインツールをラップして実行しようとしています。私が抱えている問題は、コマンドラインツールが進行状況をstdoutにスローすることです(これはサーバーリセットコマンドであるため、「停止しようとしています」および「再起動中」タイプの出力が得られます.
私がやろうとしているのは、出力をキャプチャして、アプリの一部として表示できるようにすることです。次のようなことを行うのは非常に簡単だと思いました:
import os
import subprocess as sub
cmd = "COMMAND LINE APP NAME -ARGS"
proc = sub.Popen(cmd, shell=True, stdout=sub.PIPE).stdout
while 1:
line = proc.readline()
if not line:
break
print line
これは、StdOut の内容を取得するという点で部分的に機能しますが、進行状況メッセージが送信される代わりに、コマンド ライン アプリケーションが終了するとそれを取得し、StdOut を一度にフラッシュするように見えます。
簡単な答えはありますか?