python中json.dump()和json.dumps()有什么区别?

2024-05-23 13:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在this官方文档中搜索,以找出python中json.dump()和json.dumps()之间的区别。很明显,它们与文件写入选项有关。
但它们之间的具体区别是什么?在什么情况下,一方比另一方更有优势?


Tags: 文件文档json官方选项情况thisdump
3条回答

内存使用和速度。

当您调用jsonstr = json.dumps(mydata)时,它首先在内存中创建数据的完整副本,然后才将数据file.write(jsonstr)放入磁盘。因此,这是一种更快的方法,但如果要保存大量数据,则可能会出现问题。

当调用json.dump(mydata, file)——不使用's'时,不会使用新内存,因为数据是由块转储的。但整个过程大约慢了2倍。

来源:我检查了json.dump()json.dumps()的源代码,还测试了用time.time()测量时间的变量和观察htop中的内存使用情况。

除了医生说的以外,没有什么可以补充的了。如果您想将JSON转储到文件/套接字或其他文件中,那么应该选择dump()。如果只需要将其作为字符串(用于打印、解析或其他用途),则使用dumps()(转储字符串)

Antii Haapala in this answer所述,在ensure_ascii行为上存在一些细微的差异。这主要是由于底层的write()函数是如何工作的,因为它操作成块而不是整个字符串。请检查答案以了解有关该问题的详细信息。

json.dump()

Serialize obj as a JSON formatted stream to fp (a .write()-supporting file-like object

If ensure_ascii is False, some chunks written to fp may be unicode instances

json.dumps()

Serialize obj to a JSON formatted str

If ensure_ascii is False, the result may contain non-ASCII characters and the return value may be a unicode instance

带有s的函数采用字符串参数。其他人拿着文件 溪流。

相关问题 更多 >