我正在为机器人开发一个基于网络的控制器。当我运行像os.system('cd /home/tim/tmprcc/; ino build; ino upload')
这样的命令时,我需要能够将输出发送到Web应用程序。如何在Python中执行期间捕获输出?用户需要能够在我的终端上显示输出。
你的答案应该是Python代码,每当出现一行输出时调用do_something_function(new_output)
,其中new_output是到目前为止生成的整个输出。
答案 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。