TypeError:%:' int'不支持的操作数类型和'元组'

时间:2015-05-05 16:49:40

标签: python formatting raspberry-pi

在Raspberry Pi上,我进行了设置,以便它监视来自用户的ASCII串行输入,然后使用解析后的数据解析并填充矩阵。但是当我尝试对数据做些什么时:

for i in range(1,7):
    if matrixA[i][1]>0:
        print "sending DO_Fire (pin %d) HIGH for %dms, with a power level of %d"%(DO_Fire,int(matrixA[i][1]),int(matrixA[i][2]))
        os.system("pigs m %d w wvclr wvag 16 0 %d 0 16 10000 wvcre")%(DO_Fire,int(matrixA[i][1]))
        os.system("pigs m %d w wvag 0 16 %d 16 0 10000 wvcre wvtx 0")%(LED_Fire,int(matrixA[i][2]))

它打印消息就好了,但是命令行操作有问题,引用了以下错误:

TypeError: unsupported operand type(s) for %: 'int' and 'tuple'

首先,当我这样做时,我正在使用$s,所以我认为我只需要将数据转换为int,但这并没有任何区别。< / p>

我错过了什么?任何建议或有用的意见将不胜感激。

根据要求在下方进行完整追溯:

Traceback (most recent call last):
File "rs232.py", line 974, in <module>
line =  readLine(ser)
File "rs232.py", line 131, in readLine
goA()
File "rs232.py", line 184, in goA
preheats() #detect all stored preheats and fire them
File "rs232.py", line 147, in preheats
os.system("pigs m %d w wvclr wvag 16 0 %d 0 16 10000 wvcre")%(DO_Fire,int(matrixA[i][1]))
TypeError: unsupported operand type(s) for %: 'int' and 'tuple'

1 个答案:

答案 0 :(得分:3)

os.system()调用返回一个整数(进程退出代码)。您希望将%运算符应用于字符串参数,而不是函数的返回值。

你这样做:

os.system(string) % tuple

而不是

os.system(string % tuple)

移动这些括号:

os.system("pigs m %d w wvclr wvag 16 0 %d 0 16 10000 wvcre" % (DO_Fire, int(matrixA[i][1])))
os.system("pigs m %d w wvag 0 16 %d 16 0 10000 wvcre wvtx 0" % (LED_Fire, int(matrixA[i][2])))