【问题标题】:How can I read the code from a text file to a dictionary in a python file? [duplicate]如何将文本文件中的代码读取到 python 文件中的字典中? [复制]
【发布时间】:2020-07-05 09:13:51
【问题描述】:
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()

免责声明:python 新手 我正在尝试创建通讯录/通讯录。是的,我知道这可以通过类和诸如此类的东西更轻松地完成,但我还没有学习它们,并且已经太过分了,无法按照我的口味重写整个东西。

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

【问题讨论】:

  • 你想看看将json filescontacts_dict = json.load(contacts_file)json.dump(contacts_dict)一起使用
  • 制作一个更简单的 dict 并在其上使用文件 I/O。如果你有问题,你可以在这里问。但是,现在,您处理联系信息的代码太多(可能有效),而不是您要询问的内容,即 only 文件和 Python 字典。欢迎登机。
  • 完成后,IDLE 以json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 响应。另外,感谢您的欢迎。编辑:哦,这是因为文件不是json格式的吗?
  • 不,写一些代码并发布它。我不知道你做了什么,所以我无法评论。 json 文件有一种特殊的格式,你可以在jsonlint.com 这样的地方进行测试,但请记住一件事:json 只处理列表、字典、数字、字符串和布尔值等原语。不要试图将类直接放入,尽管有一些方法可以解决。您也可以尝试 yaml,它与 json 执行相同的操作,但文件格式更好(?)。 pypi.org/project/PyYAML
  • 最后,您可能需要考虑一个真正的编辑器。例如,VS 代码是免费赠品。

标签: python dictionary


【解决方案1】:

我不希望 json 在 mode=a appends 中工作。如果您在线玩它,您就会明白原因:在末尾添加一行会破坏格式。

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

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)

输出:

不是 json 格式,因为它需要",而不是'

{'Phil': {'email': 'phil@example.com'}}

【讨论】:

  • 工作。谢谢!
  • 您可能仍然可以投票(?)接受(?)一个封闭问题的答案。提示提示。这是 SO 的另一面,人们总是要求积分 ;-)
  • 哦,还有泡菜,就像关于重复问题的一些建议一样?安全风险,除非您明确信任数据,这意味着没有用户输入它 - pickle 基本上按照文件中的说明运行 python 代码。 yaml 也有,但程度要小得多。 json 最不可能出现安全问题。
  • 大声笑,我确实尝试过投票,但很遗憾“感谢您的反馈!声望低于 15 人的投票会被记录下来,但不要更改公开显示的帖子得分。”
  • 不用担心。这是泡菜的安全方面。 security.stackexchange.com/questions/183966/…pickle 很快,它避免了只处理原语的需要——json 和 python 真的很烦人——即使是日期时间也会让你烦恼。但这只是一个巨大的安全风险,所以不要使用它,除非你 a) 确定它是安全的并且 b) 你有充分的理由。如果您有 python json 序列化转储错误,仔细检查 SO 上的内容 - 有很多问题/答案。
猜你喜欢
  • 2013-09-28
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2013-07-20
相关资源
最近更新 更多