如何为保存在Python文本文件中的dict分配变量

如何为保存在Python文本文件中的dict分配变量,python,dictionary,text,Python,Dictionary,Text,作为一名初学者,我正在尝试使用保存在名为contacts.txt的文本文件中的dict编写一个联系人列表程序,以将数据存储在中。为了更新我的联系人dict,我可以使用contacts.update(dict2),dict2是新联系人的输入数据。我尝试了下面的代码,但不起作用: new_entry = {} # contacts = {} contacts = contacts_file = open("contacts.txt", 'a+') def data(): cell =

作为一名初学者,我正在尝试使用保存在名为contacts.txt的文本文件中的dict编写一个联系人列表程序,以将数据存储在中。为了更新我的联系人dict,我可以使用contacts.update(dict2),dict2是新联系人的输入数据。我尝试了下面的代码,但不起作用:

new_entry = {}
# contacts = {}


contacts = contacts_file = open("contacts.txt", 'a+')

def data(): 
    cell = input("Enter cell number: ")
    first = input("Enter first name: ")
    last = input("Enter last name: ")

    new_entry = {cell: (first, last)}
    print("NEW ENTRY:" + str(new_entry))

data()

contacts.update(new_entry)
print("CONTACTS: " + str(contacts))


def write_to_file():
    contacts_file = open("contacts.txt", 'w')
    contacts_file.write(str(contacts))
    contacts_file.close()

write_to_file()
我的想法是将变量“contacts”分配给保存在文本文件中的dict。最初,dict将为空,但每次输入新的联系人详细信息时,它将填充新数据

但我得到一个错误:AttributeError:“\u io.TextIOWrapper”对象在我运行程序时没有属性“update”

显然,问题在于:

contacts = contacts_file = open("contacts.txt", 'a+')

我想将文本文件上的字典分配给变量contacts,这样contacts就可以通过新条目更新,更新的contacts dict会再次保存到文本文件中,覆盖原始dict

如果我将联系人分配给一个空的dict,它也不会起作用,因为每次程序运行时,新数据都会被添加到一个空的dictionary中

我做错了什么

谢谢


Andre

文件中没有dict(或任何其他Python对象)这样的东西。您可能有它的字符串表示形式。您需要打开文件,反序列化对象,更新它,然后序列化它并将其写回文件。例如,使用
json

import json

with open('some_file') as f:
    deserialized_object = json.load(f)
    deserialized_object['key_to_update'] = 'updated_value'
    serialized_object = json.dumps(deserialized_object)

    f.seek(0)
    f.write(serialized_object)
    f.truncate()

文件中不存在
dict
(或任何其他Python对象)。您可能有它的字符串表示形式。您需要打开文件,反序列化对象,更新它,然后序列化它并将其写回文件。例如,使用
json

import json

with open('some_file') as f:
    deserialized_object = json.load(f)
    deserialized_object['key_to_update'] = 'updated_value'
    serialized_object = json.dumps(deserialized_object)

    f.seek(0)
    f.write(serialized_object)
    f.truncate()

“我想在文本文件上指定词典”-文本文件中没有词典。只有一堆符号需要解析才能从中提取出结构。“我想在文本文件中分配字典”-文本文件中没有字典。只有一堆符号需要解析才能从中提取出结构。