我正在尝试编写一些脚本,但是其中一个实用程序将一个值返回给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。
答案 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