1

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

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

4

1 回答 1

0

您将要查看子流程模块。

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)

请记住,此方法有一些注意事项。直接来自子流程的文档

警告使用communicate() 而不是.stdin.write、.stdout.read 或.stderr.read 以避免由于任何其他操作系统管道缓冲区填满并阻塞子进程而导致的死锁。

有关更多信息,请参阅此答案

于 2012-11-29T01:07:42.433 回答