将os.system的输出发送到Web应用程序

时间:2012-11-29 00:34:53

标签: python

我正在为机器人开发一个基于网络的控制器。当我运行像os.system('cd /home/tim/tmprcc/; ino build; ino upload')这样的命令时,我需要能够将输出发送到Web应用程序。如何在Python中执行期间捕获输出?用户需要能够在我的终端上显示输出。

你的答案应该是Python代码,每当出现一行输出时调用do_something_function(new_output),其中new_output是到目前为止生成的整个输出。

1 个答案:

答案 0 :(得分: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)

请记住,此方法有一些注意事项。直接从subprocess's documentation

  

警告使用communic()而不是.stdin.write,.stdout.read或.stderr.read来避免由于任何其他OS管道缓冲区填满和阻止子进程而导致的死锁

有关详细信息,请参阅this answer