python中pickle和json区别

本文探讨了Python中pickle和json的区别,包括用途、序列化类型、文件读写方式以及序列化反序列化的差异。json主要用于数据传输,序列化为str,需要文本方式打开文件;pickle则用于存储数据,序列化为bytes,需以二进制方式打开。pickle的dump有分隔符,适合多次读取,而json在多次写入时需添加分隔符才能正确解析。
摘要由CSDN通过智能技术生成

一、json主要用于传输数据,而pickle主要用于存储数据

二、json序列化后为str类型,而pickle序列化后为bytes类型

三、pickle打开文件或者读取文件的时候需要以二进制的形式打开,而json以文本形式打开

四、json中的dump可以多次连续序列化并写入,但是没有分隔符;load只能从文件中一次性读取并反序列化一次,但是loads可以多次连续读取数据并反序列化,可由于dump没有分隔符,如果多次写入load因为其只能一次性读取全部,且多次写入的数据连在一起,无法正确解析所以造成错误,虽然可以通过每次dump写入后加入换行符的形式来让loads成功多次读取,但是如果在一行的情况下loads也无能为力。而pickle中dump有分隔符,所以无论是loads还是load都可以成功读取,成功解析。

举几个例子:
如果用json的dump写入文件,代码如下:

import json

dic1 = {
   "a": 1, "b": 2}
dic2 = {
   "c": 3, "d": 4}

with open("test.txt", mode="w", encoding="utf-8") as fp:
    json.dump(dic1, fp)
    jso
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值