Python帮助,读取和写入txt文件

时间:2016-08-26 11:17:39

标签: python eclipse pydev

我已在下面发布了我的代码的相关部分。在此之前只是加载函数,我很确定没有错误。

我收到错误

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 个答案:

答案 0 :(得分: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