文章目录
- 数据序列化
- 反序列化
- JSON
- JSON的方法
- json.dumps 将数据dumps到文件中示例
- dumps的内容
- loads 将数据取出来 示例
- pickle
- 使用json来dumps一个函数
- 输出文件的内容
- 使用pickle来dumps一个函数
- 输出文件的内容
- pickle来loads文件中的数据
- dumps与dump的区别
- 输出的文件内容
数据序列化
有时需要将内存中的数据存储到硬盘中,而此时就内存中的二进制数据变成文件进行存储的过程就叫序列化。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}