如何使用python提取推送到stdout的数据?

时间:2013-03-04 23:25:40

标签: python linux stdout angstrom-linux

我正在尝试编写一些脚本,但是其中一个实用程序将一个值返回给stdout,我想将它分配给一个变量。

实用程序(candump)一直在运行,只在收到数据时才打印出来。

import threading
from subprocess import call
import time

class ThreadClass(threading.Thread):
  def run(self):
    call(["candump","can0"])

t = ThreadClass()
t.start()
time.sleep(1)
call(["cansend", "can0", "-i", "0x601", "0x40", "0xF6", "0x60", "0x01", "0x00", "0x00", "0x00", "0x00"])

它返回以下值,我想在我的python脚本中使用它:

<0x601> [8] 40 f6 60 01 00 00 00 00
<0x581> [8] 4b f6 60 01 96 08 00 00

关于candump的文档(什么是将数据转储到stdout)是sparse

我有没有办法点击stdout并抢夺数据?

很抱歉,如果这非常明显......一点一点地学习Linux。

1 个答案:

答案 0 :(得分:2)

如果您不期望大量输出或不介意一次性阅读,可以使用subprocess.check_output

>>> import subprocess
>>> print subprocess.check_output(['ls', '/etc'])
adjtime
adobe
anacrontab
apparmor.d
arch-release
ati
at-spi2
avahi
axelrc
bash.bash_logout

如果您确实需要逐行阅读,请查看以下问题:read subprocess stdout line by line