Добро пожаловать в SO!
Ваша ошибка означает, что вы пытаетесь прочитать содержимое списка, превышающее его длину. Например, если я создаю список с 3 элементами в нем:
mylist = ['a', 'b', 'c']
this_does_not_exist = mylist[4] # this is undefined -> IndexError
Попытка прочитать 4-й элемент списка с 3 элементами не имеет смысла, он не определен, поэтому python выдает IndexError
у вас.
В вашем случае ваша строка, которая читает songs = fields[x]
, должна быть действительна для всех значений x до 339, другими словами, ваш line
должен иметь как минимум такое количество значений чтобы ваш код работал. Вы можете получить длину своего списка с помощью len(fields)
вместо того, чтобы пытаться угадать его, а затем использовать его следующим образом:
for field in fields:
# now field contains fields[x]
keyboard.type(field)
Это считается более pythoni c, чем использование while
как и вы (что тоже работает, но требует написания дополнительного кода).
Подробнее о IndexError
можно прочитать в python docs .