“ IndexError:列表索引超出范围”,但显然不是

时间:2019-10-07 21:47:45

标签: python arduino raspberry-pi

首先,我是python的新手,如果这是一个愚蠢的问题,我深表歉意(我有C ++的背景)。

我正在尝试将串行数据(来自arduino)分成一个列表,并将列表中的特定元素打印到控制台中。因为它们并不重要,所以我不会介绍项目的详细信息。

原始串行数据如下:

11111110,11111111,11111111

11111110,11111111,11111111

11111110,11111111,11111111

我要使用的代码是

#!/usr/bin/python

import serial, string

output = " "
ser = serial.Serial('/dev/ttyUSB0', 31250, 8, 'N', 1, timeout=1)
while True:
  print "----"
  while output != "":
   output = ser.readline()
   outList = output.strip().split(',')
   print outList[1]
  output = " "

我遇到了错误:

Traceback (most recent call last):
  File "serialtest.py", line 12, in <module>
    print outList[1]
IndexError: list index out of range

我尝试将print outList[1]替换为print(outList),并且得到了预期的结果:

['11111110', '11111111', '11111111']
['11111110', '11111111', '11111111']
['11111110', '11111111', '11111111']

我可以让print outList[0]工作,并打印11111110。这表明也许不喜欢11111111

1 个答案:

答案 0 :(得分:0)

在尝试分割output之前,您需要测试outLine是空字符串。

您还需要在测试之前剥离while True: print "----" while True: output = ser.readline().strip() if output == "": break outList = output.split(',') print outList[1] ,而不仅仅是在拆分时。

$var = "clip$t"
echo $$var;