Python中的json与pickle模块

一、基础

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)#产生区域范围内的整数

你可能感兴趣的:(Python中的json与pickle模块)