【问题标题】:How to read and write dictionaries to external files in python? [duplicate]如何在python中读取和写入字典到外部文件? [复制]
【发布时间】:2018-05-14 01:44:44
【问题描述】:

我有一本 Python 字典。我想修改该字典,然后将字典保存到外部文件,这样当我再次加载 python 程序时,它会从外部文件中获取字典数据。

class Data:
"""
Data handling class to save
and receive json data, parent
of User for data  purposes.
"""
def saveData(data, file):
    with open(file, 'r+') as dataFile:
        dataFile.write(json.dumps(data))

def getData(file):
    with open(file, 'r+') as dataFile:
        return json.loads(dataFile.readline())

def deleteContent(file):
    file.seek(0)
    file.truncate()

但是当我写入文件然后尝试读取它时,它将它作为字符串读取,我不能使用读取的数据来设置字典。如何从外部 JSON 文件中获取字典中的数据作为字典数据,而不是字符串数据?

data = Data.getData("chatbotData.json")
dataDict = data
dataDict["age"] = 2

这是我想要对数据执行的操作,但出现此错误:

TypeError: 'str' 对象不支持项目分配

【问题讨论】:

  • 首先尝试使用json.dump(dataFile, data)(或切换参数顺序,我不记得了和return json.load(dataFile)。还有为什么不直接使用rw文件模式?

标签: python json python-3.x dictionary


【解决方案1】:

让我们创建一个字典:

>>> d = {'guitar':'Jerry', 'drums':'Mickey' }

现在,让我们将其转储到一个文件中:

>>> import json
>>> json.dump(d, open('1.json', 'w'))

现在,让我们重新读一遍:

>>> json.load(open('1.json', 'r'))
{'guitar': 'Jerry', 'drums': 'Mickey'}

更好地处理文件句柄

上面说明了json 模块,但在关闭文件方面很草率。更好:

>>> with open('1.json', 'w') as f:
...     json.dump(d, f)
... 
>>> with open('1.json') as f:
...     json.load(f)
... 
{'guitar': 'Jerry', 'drums': 'Mickey'}

【讨论】:

  • json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  • @DNinja21 我刚刚复制并粘贴了我对 python 命令提示符的回答,这对我来说一切正常。您是在运行完全相同的命令还是修改了它们?哪个命令给了你这个错误?
  • 写入 json 工作正常,但读取它会出现此错误,我会再试一次。
  • 谢谢,@John1024 我重新测试了它,现在可以正常工作了。
猜你喜欢
  • 2022-01-07
  • 2015-01-17
  • 2012-05-09
  • 2020-10-17
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
相关资源
最近更新 更多