一、基础
json和pickle模块是将数据进行序列化处理,并进行网络传输或存入硬盘。
import json
import pickle
pickle模块
python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load。cPickle是pickle模块的C语言编译版本相对速度更快。
与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。
pickle反序列化后的对象与原对象是等值的副本对象,类似与deepcopy。
import pickle
s=[value1,value2,value3...]
spickle=pickle.dumps(s)#将列表进行Pickle序列化转换
s1=pickle.loads(spickle)#将spickle反序列化转换
with open(filename,format)as f:
pickle.dump(s,f)#将序列化后的数据写入文件
json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON在python中分别由list和dict组成。
import json#插入模块
s={1:1,2:2,3:3}
sjson=json.dumps(s)#将s进行序列化
s1=json.loads(sjson)#将sjson进行反序列化
with open(filename,format)as f:
json.dump(s,f)#将s进行序列化并存入文件中
with open(filename)as f:
for line in f.readlines():
print(json.loads(line))#从文件读取并进行反序列化输出
二、问题
json与pickle模块是将Python中的数据进行序列化,便于存取与传输。
- 处理文件时,考虑多行数据的存取,如换行符的使用
- json序列化时,是以字符串的形式存取,所以对于字典的存取时,关键字或值经过序列化与反序列化后,类型都是字符串,有些表面看起来是数值,其实还是字符串,在使用时一定要注意类型的转换
- -
三、扩展
文件名的后缀解析
import os.path
os.path.splittext(file)[1]#返回文件的后缀
随机数
import random#调用随机数模块
random.random()#产生0~1之间的浮点数
randon.randint(range)#产生range范围内的整数,包括边界值
random.randrange(range)#产生区域范围内的整数
版权声明:本文为shuyededenghou原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。