不了解此AttributeError的原因

时间:2018-10-30 00:58:43

标签: python python-3.x

该代码有什么问题?当我运行时,它告诉我:

Traceback (most recent call last):
   line 24, in <module>
    people.append(Dict)
AttributeError: 'str' object has no attribute 'append'

我的代码:

live = 1

while live == 1:

#reading Database

dataRead = open ("db.txt","r")
if dataRead.read() != " ":
    dataRead.close()
    people = open ('db.txt','r').read()
    do = input ('What Do You Want ? (Search , add) :\n')

    #add people

if do == 'add':

    #Get The New Data
    n_Name = input ('enter the new name:\n')
    n_age = input ('enter the new age:\n')

    #new Dict
    Dict = {'Name:':n_Name,'age':n_age}

    people.append(Dict)

    #adding people to file

    dataWrite = open ("db.txt","w")
    dataWrite.write(str(people))
    dataWrite.close()

live = 0

2 个答案:

答案 0 :(得分:0)

问题是,在第24行上,您尝试将字典附加到字符串。当您读取数据库文件时,它会以字符串形式读取它。而且代码真的很乱,并且有很多更好的方法可以做到。但是,除此之外,根据错误输出,append()方法用于列表,变量“ people”是字符串。

答案 1 :(得分:0)

它说人是str,那么它没有附加方法。您应该串联字符串以使它们在一起。

要做:

people += '<append string>'

请记住,您正在尝试将字典附加到字符串。这将引发TypeError,因为那些类型的元素无法通过这种方式串联。您应该先执行以下操作:str(dict)将它们连接起来。

您还使用诸如dict之类的保留字作为变量。将其更改为my_dict或其他允许的名称。