关于json:如何在python中读取和写入外部文件的字典?

How to read and write dictionaries to external files in python?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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文件获取字典中的数据作为字典数据,而不是字符串数据?

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

以下是我要对数据执行的操作,我得到以下错误:

TypeError: 'str' object does not support item assignment


让我们创建一个字典:

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

现在,让我们把它转储到一个文件:

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

现在,让我们把它读回:

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

更好地处理文件句柄

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

1
2
3
4
5
6
7
>>> with open('1.json', 'w') as f:
...     json.dump(d, f)
...
>>> with open('1.json') as f:
...     json.load(f)
...
{'guitar': 'Jerry', 'drums': 'Mickey'}