从加载文本文件数据在Python字典(Loading data from textfile to a

2019-11-05 06:36发布

我这里有一个小问题。 我试着去加载,而在我的控制台应用程序做一个会议,我已保存的早期的教一个txt文件。 当我加载文件。 字典中会出现这样的:

1111 ['peter']
7777 ['frida']
1337 ['john', 'johnny']
2121 ['peter', 'foppa']

这些数字是链接到人/别名键。 当我加载它,并尝试添加新的别名,我的功能不能找到的名字..

当我添加新的个人或创建别名现有人用空的字典,它看起来像这个:

1337 killer
1337 murderer
6677 sebastian

我的附加功能如下:

def add(self,name,number):
    p = phonebook(name)
    if number in self.dictList:
        print("nummret finns redan")
    else:
        self.dictList[number] = [p]
        print("Ny person sparad")

我的别名功能,如下所示:

def alias(self,name,newName,number = None):
    self.checkIfNameExist(name)
    if self.checkIfNameExist(name) == None:
        print("telebok> finns ingen med det namnet")
    else:
        self.isNameMoreThenOne(name)
        if self.isNameMoreThenOne(name) == 1:
            print(self.isNameMoreThenOne(name))
            #getnumber
            number = self.returnNumberFromName(name)
            name = newName
            p = phonebook(name)
            #save object with append
            self.dictList[number].append(p)
            #save object with append
            print("telebok> nytt alias skapat")
        elif self.isNameMoreThenOne(name) > 1:
            if number:
                name = newName
                p = phonebook(name)
                self.dictList[number].append(p)
                print("telebok> nytt alias har skapats")
            else:
                print("Det finns flera med samma namn, skriv in numret")

我保存到一个文本函数如下所示:

def save(self,filename):
    f = open(filename,"w")
    for number in self.dictList:
        printNumber = (str(number + ";"))
        f.write(printNumber)
        keys = self.dictList[number]
        for name in keys:
            printName = str(name.name + ";")
            print(printName)
            f.write(printName)
        f.write("\n")
    f.close()

而从我的文本文件加载功能如下:

def load(self,filename):
    dList = {}
    f = open(filename,"r")
    for readLine in f:
        readLine = readLine.split(";")
        number = readLine[0]            
        #print(number)
        nameLength = len(readLine[1:])
        #print(nameLength)
        name = readLine[1:nameLength]
        p = phonebook(name)
        self.dictList[number] = dict()
        #print(name)
        self.dictList[number] = [p]
        print(self.dictList)
    f.close()

当我运行从一开始的计划,逐步增加新的人所做的一切步骤一切正常。 创建一个名称的别名,在现有的别名等等东西创建别名时,我保存或加载文本文件会完全地错了。 我的猜测是对的负载功能。 是否有任何的你有什么建议,我能做什么,而不是从一个文本文件阅读和使用程序为我做之前,我保存/负载从一个文本文件?

文章来源: Loading data from textfile to a dictionary in python