1

ロボット用の Web ベースのコントローラーを開発しています。のようなコマンドを実行するとos.system('cd /home/tim/tmprcc/; ino build; ino upload')、出力を Web アプリに送信できる必要があります。Python での実行中に出力をキャプチャするにはどうすればよいですか? ユーザーは、私の端末に表示されているように、出力をライブで見ることができる必要があります。

do_something_function(new_output)回答には、出力行が表示されるたびに呼び出す Python コードが含まれている必要があります。ここで、new_output は、これまでに生成された出力全体です。

4

1 に答える 1

0

subprocessモジュールを調べてみましょう。

import subprocess

cmd = subprocess.Popen(['cd', '/home/time/tmprcc;', 'ino', 'build;',
                        'ino', 'upload;'], stdout=subprocess.PIPE)

while cmd.poll() is None:
    new_output = cmd.stdout.readline()
    do_something_function(new_output)

この方法にはいくつかの注意点があることに注意してください。サブプロセスのドキュメントから直接:

警告.stdin.write、.stdout.read、または .stderr.read ではなく、communicate() を使用して、他の OS パイプ バッファがいっぱいになり、子プロセスがブロックされることによるデッドロックを回避します。

詳細については、この回答を参照してください。

于 2012-11-29T01:07:42.433 に答える