头牌名媛漫画,南都周刊,qingsewangzhan
就是将内存中的数据类型变成可存储或传输的东西,这一过程叫做序列化,在python中叫pickling,在其它语言叫 serialization,marshalling,flattening等,其实base64转码也可叫做序列化,因为很多文本协议如http,smtp都是只支持ascii编码传输。
序列化之后可以将内容写入磁盘,或通过网络传输到其它机器。
反序列化就是序列化的逆过程,unpickling
__Python__提供了两个模块来进行序列化操作,分别是pickle和json
pickle是python语言专属的序列化方式。
pickle模块可以将python中的任何数据类型进行序列化,并序列化为bytes类型。
pickle模块提供的方法
import pickle with open('test.pkl', 'wb') as fp: # 注意因为pickle序列化后是bytes所以file-object 能够写入二进制,那么open的打开方式就必须是二进制方式'wb'。 pickle.dump({'a': 1, 'b': 2}, fp) with open('test.txt', 'rb') as fp: # 同样读取也是要是一个binary file-object print(pickle.load(fp))
json不多说,是数据交换的一种格式。叫 json document
json模块方法和pickle类似:
import json i = 10 s = 'hello world!' t = (1,) l = [10, 'hello world!', ['a', 'b'], {'a': 1, 'b': 2}] d = {'a': 1, 'b': 2, 'c': l} print(json.dumps(i)) print(json.dumps(s)) print(json.dumps(t)) print(json.dumps(l)) print(json.dumps(d)) with open('test.json', 'w') as fp: json.dump(l, fp) with open('test.json', 'rb') as fp: print(json.load(fp)) print(json.loads(b'[10, "hello world!", ["a", "b"], {"a": 1, "b": 2}]'))
结果:
10
"hello world!"
[1][10, "hello world!", ["a", "b"], {"a": 1, "b": 2}]
{"a": 1, "b": 2, "c": [10, "hello world!", ["a", "b"], {"a": 1, "b": 2}]}
[10, 'hello world!', ['a', 'b'], {'a': 1, 'b': 2}][10, 'hello world!', ['a', 'b'], {'a': 1, 'b': 2}]
json
pickle
json.tool提供在命令行对json字符串进行json格式校验和漂亮打印pretty-print
用法:
:> echo '{"josn": "obj"}' | python -m json.tool
{
"json":"obj"
}
:> python -m json.tool mp_films.json # 后面跟json文件
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论