Как исправить «список» объект не может быть интерпретирован как индекс " - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу создать код Python для чтения последовательных данных, преобразования их в двоичное представление и записи в файл .txt. Все входящие данные имеют тип uint8 (значение от 0 до 255) с пробелом между ними. Я нашел здесь функцию «int2bin» в SO, которая, как я думал, будет работать.

код в 'main':

if __name__ == '__main__':
    #setup
    ser = serial.Serial('COM18', 19200)
    temp = ''
    intVal = []
    path = 'C:\Users\mabr\Desktop\TEST'
    name = 'fileFromEEPROM'
    myFile = open(join(path, name),"w")
    while ser.in_waiting<1:
        sleep(1)
    while ser.in_waiting>0:
        if ser.read(1) != ' ':
            intVal[0:] = ser.read()
            newData = True
        if ser.read(1) == ' ':
            ser.read(1)

        if newData == True:
            binVal = modules.int2bin(intVal, 8) #This is where the error is
            myFile.write(binVal)
            #temp += binVal
            newData = False
            intVal[:] = []  #emptying 
    myFile.close()

код в «модулях»:

def int2bin(integer, digits):
    if integer >= 0:
        return bin(integer)[2:].zfill(digits)  #This is where the error is
    else:
        return bin(2**digits + integer)[2:]

Я получаю код ошибки: «Файл» C: \ Users \ mabr \ Documents \ int8ToAscii \ src \ modules.py », строка 10, в int2bin возвратный бин (целое число) [2:]. zfill (цифры) Ошибка типа: объект списка не может быть интерпретирован как индекс "

Я думаю, что цель функции int2bin довольно понятна, но дело в том, что она должна взять целое число, хранящееся в intVal, преобразовать его в двоичный файл и вернуть результат.

Я думаю, что я мог ошибиться с тем, как я храню последовательные данные, и это может быть неправильно, но я не уверен, как сохранить трехзначное число как одно целое (как Пример «255» может быть получен, но я боюсь, что он хранится в отдельных записях в intVal, таких как «intVal [] = {'2', '5', '5'}).

Пожалуйста, прокомментируйте, если я что-то пропустил. Я все еще новичок в SO и, возможно, не упомянул что-то важное. Спасибо.

...