Python Basic - 序列化JSON,pickle 的简单使用

数据序列化

有时需要将内存中的数据存储到硬盘中,而此时就内存中的二进制数据变成文件进行存储的过程就叫序列化。python称这个过程为picking。在其它语言中有叫serialization等等。

反序列化

将存储在硬盘上的数据读取出来的过程就称为反序列化,也叫unpickling.

JSON

JSON用于将数据对象在不同语言之间进行传递,相当于一个翻译的过程,要序列成标准格式。XML也是一种标记语言,也有序列化的功能,但是JSON更易用,更易读取,且比XML更快,可直接在web界面中读取,所以更通用。

JSON类型python类型
{}dict
[]list
“string”str

JSON的方法

方法名用途
dumps序列化过程,将数据存储成文件
dump与dumps一样,但可连同文件一块儿操作,具体可查看后面的小实验
loads反序列化过程,将文件读取出来
load与loads一样,但可连同文件一块儿操作,具体可查看后面的小实验

json.dumps 将数据dumps到文件中示例

import json

dictory = {"Name":"Elon Musk","Company":"Tesla","Age":48}

data = json.dumps(dictory)

file = open("file.json","w")
file.write(data)
file.close()

dumps的内容

{"Name": "Elon Musk", "Company": "Tesla", "Age": 48}

dumps出来的内容是一个“像字典”的文本。是一个json格式的字条串

loads 将数据取出来 示例

将文件内容取出来

import json

json_data = open("file.json","r")
data = json_data.read()
data = json.loads(data)
print(data)
print(data["Name"])

"""
{'Name': 'Elon Musk', 'Company': 'Tesla', 'Age': 48}
Elon Musk
"""

没办法将更高级的字符串转换,如函数,如类。像这类需要转换可以用pickle。

pickle

pickle,是一个功能与JSON类似的模块,但是只能在python之间进行转换,无法与其它开发语言互相转换,pickle支持的数据类型更多。

使用json来dumps一个函数

import json

def functest():
    print("ok")


data = json.dumps(functest())
file = open("test.json","w")

file.write(data)

输出文件的内容

null

使用pickle来dumps一个函数

import pickle

def functest():
    print("ok")


data = pickle.dumps(functest())
file = open("test.json","wb")

file.write(data)

pickle只支持字节类型的数据

输出文件的内容

�N.

输出的文件为一串看不懂的字符,但是确实已经输出到文本中了。

pickle来loads文件中的数据

pickle可以序列化一个函数,但是函数是指向内存空间的,而移植到别的电脑的时候就无法读出来了。所以在读取的时候也需要有原函数存在,

import pickle

def functest():
    print("ok")

pickle_data = open("test.json","rb")

data = pickle_data.read()
data = pickle.loads(data)
print(data)

dumps与dump的区别

dump()可以直接接受两个参数,直接将内容dump到文件中。不需要单独写open()的方法来写入文件

import json
dictory = {"Name":"Elon Musk","Company":"Tesla","Age":48}

file = open("test2.json","w")
data = json.dump(dictory,file)
file.close()
print(data)

输出的文件内容

{"Name": "Elon Musk", "Company": "Tesla", "Age": 48}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值