如何在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)
。还有为什么不直接使用r
和w
文件模式?
【参考方案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中读取和写入字典到外部文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python txt文件读取写入字典的方法(jsoneval)