2016-08-26 8 views
-2

Я разместил соответствующую часть моего кода ниже. До этого есть только функции загрузки, которые, я уверен, не имеют ошибок.Python help, чтение и запись в txt-файл

Я ПОЛУЧАТЬ ошибка

IndexError: list index out of range("namestaj["Naziv"] = deon[1]") 

Кто-нибудь увидеть что-то не в порядке?

#load furniture from a txt file 
def ucitajNamestaj(): 
    listaNamestaja = open("namestaj.txt", "r").readlines() 
    namestaj = [] 
    for red in listaNamestaja: 
     namestaj.append(stringToNamestaj(red)) 
    return namestaj 

#String to Furniture, dictionary 
def stringToNamestaj(red): 
    namestaj = {} 
    deon = red.strip().split("|") 
    namestaj["Sifra"] = deon[0] 
    namestaj["Naziv"] = deon[1] 
    namestaj["Boja"] = deon[2] 
    namestaj["Kolicina"] = int(deon[3]) 
    namestaj["Cena"] = float(deon[4]) 
    namestaj["Kategorija"] = deon[5] 
    namestaj["Dostupan"] = deon[6] 
    return namestaj 
+1

Пожалуйста, форматировать Ваш код, очень трудно читать и невозможно определить все отступы ошибки. Ваша строка 'deon = red.strip(). Split (" | ")', вероятно, не создает больше одного элемента (может быть, пустая строка в файле?). Распечатайте значение 'deon' после этого утверждения для проверки. Мы не можем воспроизвести это без вашего файла данных. – cdarke

ответ

0

Пара вещей, во-первых, всегда стараюсь, чтобы обеспечить mcve и убедитесь, что вы правильно использовать так директивы кода, в противном случае ваш вопрос нечитаемым.

Теперь, вероятно, то, что происходит ваш файл имеет несколько пустых строк и вы не пропуская тех, попробуйте следующее:

def ucitajNamestaj(): 
    listaNamestaja = open("namestaj.txt", "r").readlines() 
    namestaj = [] 
    for red in listaNamestaja: 
     if red.strip() == "": 
      continue 
     namestaj.append(stringToNamestaj(red)) 
    return namestaj 

def stringToNamestaj(red): 
    namestaj = {} 
    deon = red.strip().split("|") 
    namestaj["Sifra"] = deon[0] 
    namestaj["Naziv"] = deon[1] 
    namestaj["Boja"] = deon[2] 
    namestaj["Kolicina"] = int(deon[3]) 
    namestaj["Cena"] = float(deon[4]) 
    namestaj["Kategorija"] = deon[5] 
    namestaj["Dostupan"] = deon[6] 
    return namestaj 
+0

Большое вам спасибо! Yeh им поразил, как я не видел его раньше –