«IndexError: список индексов вне диапазона», но он явно не [решен] - PullRequest
0 голосов
/ 08 октября 2019

Прежде всего, я новичок в 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 голосов
/ 08 октября 2019

Вам нужно проверить output как пустую строку перед тем, как попытаться разбить ее.

Вам также нужно раздеть outLine перед тестированием, а не только когда вы разделяете его.

while True:
    print "----"
    while True:
        output = ser.readline().strip()
        if output == "":
            break
       outList = output.split(',')
       print outList[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...