Python-树莓派:从popen结果中获取整数
我在树莓派上用Python编程。
我想通过一个外部应用程序(Hipi)读取i2c加速度计的数值。
为此,我使用了Popen函数,代码是这样的:
Xprev=Popen(['hipi-i2c', "r", "1", "0x1D", "0x01"]) # read X value
运行后得到的结果是一个单一的数值(比如说100
)。
如果我在Python中打印这个结果,或者在命令行中执行同样的命令,都是可以正常工作的。
我需要把这个值加到另一个值上,以便进行比较,看看加速度计是否在移动。但是如果我像这样进行加法:
S=10 # Threshold
Xpt=Xprev + S # Xprev from previous read
Xnt=Xprev - S # Xprev from previous read
结果显示:unsupported operand type (s) for +: 'Popen' and 'int'
,意思是说不支持把'Popen'和'int'类型的数值相加。
1 个回答
0
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这个过程就像是把水从一个桶倒到另一个桶一样。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据不在我们想要的地方。这就需要我们用一些工具来帮助我们解决这些问题。
在编程的世界里,有很多这样的工具和方法,可以帮助我们更好地管理和处理数据。比如,有些工具可以让我们更方便地读取数据,有些工具可以帮助我们把数据转换成我们需要的格式。
总之,处理数据就像是在厨房里做饭,我们需要准备好材料,选择合适的工具,才能做出美味的菜肴。
from subprocess import Popen, PIPE
cmdline = ['hipi-i2c', 'r', '1', '0x1D', '0x01']
result = Popen(
cmdline
, stdin=PIPE
, stdout=PIPE
, stderr=PIPE
)
output = result.stdout.readlines()
try:
X = int(output[0])
except:
pass
print X