python 序列化pickle&json模块

pickle模块

以下资料来源于:
https://blog.csdn.net/weixin_41644993/article/details/96484489
https://book.apeland.cn/details/67/

pickle.dump(obj, file, [,protocol])

  • 接受一个文件句柄和一个数据对象作为參数,把数据对象obj以特定的格式保存到给定的文件file里

参数:

  • obj:想要序列化的obj对象。
  • file:文件名称。
  • protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

使用

import pickle

data = {'k1': 123, 'k2': 'Hello'}
# pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件
with open('result.pk', "wb") as fp:
    pickle.dump(data, fp)

pickle.load(file)

  • 将file中的对象序列化读出。

参数:

  • file:文件名称。

使用

import pickle

data = {'k1': 123, 'k2': 'Hello'}
# pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件
with open('result.pk', "wb") as fp:
    pickle.dump(data, fp)
# pickle.load  从文件里加载
f = open("result.pk", "rb")
d = pickle.load(f)
print(d) 		# {'k1': 123, 'k2': 'Hello'}

pickle.dumps(obj[, protocol])

  • 将obj对象序列化为string形式,而不是存入文件中。

参数:

  • obj:想要序列化的obj对象。
  • protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

使用

import pickle

data = {'k1': 123, 'k2': 'Hello'}
# pickle.dumps 将数据通过特殊的形式转换位只有python语言认识的字符串
p_str = pickle.dumps(data)  # 注意dumps会把数据变成bytes格式
print(p_str)
# 输出:b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01K{X\x02\x00\x00\x00k2q\x02X\x05\x00\x00\x00Helloq\x03u.'

pickle.loads(string)

  • 从string中读出序列化前的obj对象。

使用

import pickle
# loads  将pickle数据转换为python的数据结构
ls = ['12', '34', '56']
str = pickle.dumps(ls)
mes = pickle.loads(str)
print(mes) 	# ['12', '34', '56']

JSON 模块

  • Json模块也提供了四个功能:dumps、dump、loads、load,用法跟pickle一致
import json

data = {'k1': 123, 'k2': 'Hello'}
# json.dumps 将数据通过特殊的形式转换位所有程序语言都认识的字符串
j_str = json.dumps(data)  # 注意json dumps生成的是字符串,不是bytes
print(j_str)
# dump入文件
with open('result.json', 'w') as fp:
    json.dump(data, fp)
# 从文件里load
with open("result.json") as f:
    d = json.load(f)
    print(d)

dumps用法

  • json.dumps 用于将 Python 对象编码成 JSON 字符串。

语法

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=“utf-8”, default=None, sort_keys=False, **kw)

import json

data = [{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}]

data2 = json.dumps(data)
print(data2) # str类型 输出:[{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}]
import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)
"""
输出:
{
    "a": "Runoob",
    "b": 7
}
"""

python 原始类型向 json 类型的转化对照表:

PythonJSON
dictobject
list, tuplearray
str, unicodestring
int, long, floatnumber
Truetrue
Falsefalse
Nonenull

json.loads

  • json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

使用

import json

jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'

text = json.loads(jsonData)
print(text)			# 输出一个字典:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}	

json 类型转换到 python 的类型对照表:

JSONPython
objectdict
arraylist
stringunicode
number (int)int, long
number (real)float
trueTrue
falseFalse
nullNone
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值