0

我正在尝试编写一些脚本,但是我拥有的实用程序之一将一个值返回到标准输出,我想将它分配给一个变量。

实用程序 (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 的文档(将数据转储到标准输出的内容)很少

有没有办法可以利用标准输出并抓取数据?

对不起,如果这非常明显......一点一点地学习 Linux。

4

1 回答 1

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

于 2013-03-04T23:28:53.337 回答