我在这个官方文档中搜索,想要找到python中json.dump()和json.dumps()之间的区别。很明显它们都与文件写入选项有关。
但是它们之间的详细区别是什么,在什么情况下一个比另一个更有优势呢?
我在这个官方文档中搜索,想要找到python中json.dump()和json.dumps()之间的区别。很明显它们都与文件写入选项有关。
但是它们之间的详细区别是什么,在什么情况下一个比另一个更有优势呢?
dump()
。如果你只需要它作为一个字符串(用于打印、解析或其他操作),那么请使用dumps()
(转储字符串)。ensure_ascii
的行为存在一些细微差别。这主要是由于底层的write()
函数是按块而不是整个字符串进行操作的。请查看他的答案以获取更多详细信息。
json.dump()
json.dumps()
关于内存使用和速度。
当您调用 jsonstr = json.dumps(mydata)
时,它会先在内存中创建一个完整的数据副本,然后再将其写入磁盘 file.write(jsonstr)
。因此,这是一种更快的方法,但如果要保存大量数据可能会出现问题。
当您调用 json.dump(mydata, file)
——没有's',新的内存不会被使用,因为数据是按块转储的。但整个过程大约慢了2倍。
来源:我查看了 json.dump()
和 json.dumps()
的源代码,并测试了两种变体,使用 time.time()
计时并观察 htop 中的内存使用情况。
以 s
结尾的函数接受字符串参数,其他函数接受文件流或文件指针。
ensure_ascii=False
,dump
就会将 UTF-8 编码的数据正确地写入文件(除非你使用了带有未被编码为 UTF-8 的扩展字符的 8 比特字符串):dumps
搭配 ensure_ascii=False
可以根据你对字符串使用的类型生成一个 str
或者 unicode
:
(强调是我的)。请注意,它仍然可以是使用此转换表将对象序列化为JSON格式的str。如果 ensure_ascii 为 False,则结果可能包含非 ASCII 字符,返回值可以是
unicode
实例。
str
实例。unicode.encode
。load
和 loads
,load
认为整个文件是一个 JSON 文档,因此你不能使用它从单个文件中读取多个以换行分隔的 JSON 文档。json.dumps([b'123'])
-> TypeError
。 - Antti Haapala -- Слава Україніdump
(或 with open
和 dump
)是异步的,还是会在脚本继续执行之前完全执行完毕? - oldboy
dump
(或with open
和dump
)是异步的,还是会在脚本继续执行之前完全执行完毕? - oldboy.dump
的具体用例是什么?为什么有人不想要它作为字符串? - Charlie Parker