如何将代码从文本文件读入python文件中的词典?

如何将代码从文本文件读入python文件中的词典?,python,dictionary,Python,Dictionary,免责声明:python上的Noob 我正在尝试创建通讯簿/联系人簿。是的,我知道这可以在课堂上做得更容易些,但我还没有学会,而且我已经走得太远了,无法根据自己的喜好重写整件事 对我来说,问题是,代码末尾的输出工作正常,在txt文件中显示良好,但是每当启动python文件时,我想将该输出读回python字典中,这样我就可以修改/删除/搜索,而不仅仅是添加。我不希望json在模式=a附录下工作。如果你在网上玩它,你会看到原因:在末尾添加一行会破坏格式 这里有一些代码,可以尝试读取它,添加一个新联系人

免责声明:python上的Noob 我正在尝试创建通讯簿/联系人簿。是的,我知道这可以在课堂上做得更容易些,但我还没有学会,而且我已经走得太远了,无法根据自己的喜好重写整件事


对我来说,问题是,代码末尾的输出工作正常,在txt文件中显示良好,但是每当启动python文件时,我想将该输出读回python字典中,这样我就可以修改/删除/搜索,而不仅仅是添加。

我不希望json在
模式=a
附录下工作。如果你在网上玩它,你会看到原因:在末尾添加一行会破坏格式

这里有一些代码,可以尝试读取它,添加一个新联系人,然后保存它。您几乎必须加载整个内容,修改它,然后再次保存它

contacts = {}
#trying to insert read code here to read from text file to a dictionary   



with open('Contacts.txt', 'a+') as contacts_file:
    contacts_file.write(str(str(contacts)))




contacts_file.close()
输出: 不是json格式,因为它需要
,而不是

import json

fnp = "contacts.json"
try:
    with open(fnp, "r") as fi:
        my_contacts = json.load(fi)
except (IOError,) as e: 
    my_contacts = {}

my_contacts["Phil"] = dict(email="phil@example.com")


with open(fnp, "w") as fo:
    json.dump(my_contacts, fo)


with open(fnp, "r") as fi:
    my_contacts2 = json.load(fi)

print(my_contacts2)

您想看看如何使用
contacts\u dict=json.load(contacts\u file)
json.dump(contacts\u dict)
制作一个简单得多的dict,并在上面玩文件I/O。如果您有问题,可以在这里询问。但是,现在,您的代码有点太多(这可能有效)处理联系信息,而不是您询问的内容,这些信息只是文件和Python字典。欢迎加入。完成后,IDLE会以
json.decoder.jsondecodecorr响应:期望值:第1行第1列(char 0)
。另外,谢谢你的欢迎。编辑:哦,这是因为文件不是json格式吗?不,写一些代码并发布。我不知道你做了什么,所以我不能发表评论。json文件有一种特殊的格式,你可以在一些地方进行测试,比如记住一件事:json只处理列表、字典等基本体UBBER、字符串和布尔值。不要尝试将类直接放入,尽管有方法可以工作。也可以尝试YAML,它与JSON做的事情一样,但是有更好的文件格式。最后,你可能想考虑一个真正的编辑器。VS代码是免费的。例如,工作。谢谢。你仍然可以接受(?)一个封闭式问题的答案。提示,提示。这是另一面,人们总是要求分数;-)哦,还有pickle,就像关于重复问题?安全风险的一些建议一样,除非你明确信任数据,这意味着没有用户输入数据-pickle基本上按照文件中的指示运行python代码。yaml有这一点json是最不可能有安全问题的。哈哈,我确实尝试过投票,但不幸的是“谢谢你的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。“不用担心。这里是pickle的安全方面。pickle的速度很快,而且它避免了只处理原语的需要——json和python对此非常恼火——即使是datetime也会让你恼火。但这只是一个巨大的安全风险,所以不要使用它,除非你a)确定它是安全的,b)你有很好的理由。如果您有python json序列化转储错误,请仔细检查所显示的内容,因为这里有大量的问题/答案。
{'Phil': {'email': 'phil@example.com'}}