如何在python中读取和写入字典到外部文件? [复制]

Posted

技术标签:

【中文标题】如何在python中读取和写入字典到外部文件? [复制]【英文标题】:How to read and write dictionaries to external files in python? [duplicate] 【发布时间】: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文件模式? 【参考方案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 我重新测试了它,现在可以正常工作了。

以上是关于如何在python中读取和写入字典到外部文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

读取csv字典变成str了怎么办

Python txt文件读取写入字典的方法(jsoneval)

pythhon_如何读取json数据

垂直读取和写入多个字典到csv文件

在读取/写入文件到内部/外部存储android时使用啥类和方法?

Swift 4 如何在文档目录中写入/读取字典?