我正在尝试编写一些脚本,但是我拥有的一个实用程序将一个值返回给stdout,在这里我想将它分配给一个变量。
实用程序(candump)一直在运行,只有在接收到数据时才会打印到std out。

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。

最佳答案

如果您不需要大量的输出,或者不介意一下子阅读它,您可以使用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

关于python - 如何使用python提取推送到stdout的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15213090/

10-16 20:30