我如何将JSON数据写入文件?

问题描述 投票:996回答:13

我将JSON数据存储在变量data中。

我想将其写入文本文件进行测试,因此我不必每次都从服务器获取数据。

当前,我正在尝试:

obj = open('data.txt', 'wb')
obj.write(data)
obj.close

并且我收到此错误:

TypeError:必须是字符串或缓冲区,而不是dict

如何解决此问题?

python json
13个回答
1834
投票

您忘记了实际的JSON部分-data是一个字典,尚未进行JSON编码。编写为like this以实现最大兼容性(Python 2和3):

import json
with open('data.json', 'w') as f:
    json.dump(data, f)

在现代系统(即Python 3和UTF-8支持)上,您可以使用以下命令编写更好的文件:>

import json
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

2
投票
如果您尝试使用json格式将pandas数据帧写入文件,则建议您这样做

1
投票
所有先前的答案都是正确的,这是一个非常简单的示例:

1
投票
可以如下将JSON数据写入文件中

1
投票
接受的答案很好。但是,我遇到了“不是json可序列化”错误。

256
投票

要获取<< [utf8


157
投票
我会稍作修改,对上述答案进行回答,即编写一个美化的JSON文件,人眼可以更好地读取它。为此,将sort_keys设置为True,将indent设置为4个空格字符,您就可以了。还应确保确保不会将ASCII代码写入您的JSON文件中:

106
投票
[使用Python 2 + 3读写JSON文件;与unicode一起使用

21
投票
对于那些尝试转储希腊语或其他“异类”语言(例如我,但也遇到诸如和平符号(\ u262E)或其他通常包含在json中的奇怪字符的问题(unicode错误)的人格式化数据(例如Twitter的数据),解决方案可能如下(sort_keys显然是可选的):

10
投票
我没有足够的声誉来添加评论,所以我只在这里写下有关此烦人的TypeError的一些发现:

7
投票
使用JSON在文件中写入数据,请使用

json.dump()


4
投票
import json data = {u'\u0430\u0431\u0432\u0433\u0434': 1} #{u'абвгд': 1} with open('data.txt', 'w') as outfile: json.dump(data, outfile)

4
投票
要以缩进形式写JSON,“漂亮打印”:
© www.soinside.com 2019 - 2024. All rights reserved.