2016-08-26 4 views
-2

아래 코드의 관련 부분을 게시했습니다. 그 전에는로드 기능 만 있고, 나는 오류가 없다고 확신한다.Python 도움말, 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를 제공하기 위해 항상 노력하고 제대로 SO 코드 지시어를 사용해야합니다.

지금은 아마 무슨 일이 일어나고있는이 파일은 일부 빈 라인을 가지고 있으며, 당신이 그를 건너 뛰는하지 않을 것입니다,이 시도 :

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 im는 내가 그것을 어떻게 빨리 보지 않았 느냐고 놀랐다. –