python3之序列化(pickle&json)

1、pickle模块

python持久化的存储数据:

python程序运行中得到了一些字符串,列表,字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。python模块大全中pickle模块就排上用场了, 他可以将对象转换为一种可以传输或存储的格式。

pickle模块将任意一个python对象转换成一系统字节的这个操作过程叫做串行化对象。

python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load。cPickle是pickle模块的C语言编译版本相对速度更快。

与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

import pickle

data2 = [1,2,3,4]
det_str = pickle.dumps(data2)
print(det_str)

#output:  输出为二进制格式
b‘\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.‘

#将数据序列化后存储到文件中
f = open(‘test.txt‘,‘wb‘)   #pickle只能以二进制格式存储数据到文件
data = {‘k1‘:‘python‘,‘k2‘:‘java‘}
f.write(pickle.dumps(data))   #dumps序列化源数据后写入文件
f.close()

#反序列化读取源数据
import pickle
f = open(‘test.txt‘,‘rb‘)
da = pickle.loads(f.read())   #使用loads反序列化
print(da)

dumps和dump,load和loads的区别:

dumps是将对象序列化

dump是将对象序列化并保存到文件中

loads将序列化字符串反序列化

load将序列化字符串从文件读取并反序列化

import pickle

data1 = [1,‘a‘,2,‘b‘,3,‘c‘]
pi = pickle.dumps(data1)  #序列化对象
print(pi)
print(pickle.loads(pi))    #反序列化对象

f = open(‘test1.txt‘,‘wb‘)
data2 = [‘py‘,‘th‘,‘on‘,123]
pickle.dump(data2,f)    #序列化对象到文件
f = open(‘test1.txt‘,‘rb‘)
red = pickle.load(f)   #从文件中反序列化对象
print(red)

2、json模块

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

data1 = [1,‘a‘,2,‘b‘,3,‘c‘]
pi = json.dumps(data1)
print(pi)
print(json.loads(pi))

f = open(‘test1.txt‘,‘w‘)   #与pickle不同的是存储时不使用二进制存储,而使用str
data2 = [‘py‘,‘th‘,‘on‘,123]
json.dump(data2,f)
f = open(‘test1.txt‘,‘r‘)
red = json.load(f)
print(red)

3、json与pickle模块的区别

1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。

2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异。

时间: 2024-10-06 12:06:27

python3之序列化(pickle&json)的相关文章

Python常用模块——序列化pickle&json模块

Python常用模块--序列化pickle&json模块 一.什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接收bytes. 二.为什么要序列化? 你打游戏过程中,打累了,停下来,关掉游戏,想过2天再玩.2天之后,游戏从你上次停止的地方继续运行,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产生的很多临时数据是不规律的,可能在你关掉游戏时正好有10个列表,3个嵌套字典的数据集合在内存里,需要存下来,你如何

python序列化 pickle,json模块

Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.load pickle.dump[ojb, file [,protocol] 序列化对象,并将结果数据流写入到文件对象中. 必填参数ojb表示要封装的对象

Python序列化之json与pickle

1.json介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等

python使用pickle,json等序列化dict

import pickle, json, csv, os, shutil class PersistentDict(dict): ''' Persistent dictionary with an API compatible with shelve and anydbm. The dict is kept in memory, so the dictionary operations run as fast as a regular dictionary. Write to disk is d

Python--模块之sys模块、logging模块、序列化json模块、序列化pickle模块

sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 示例: import sys count = 1 while count <10: print(count) if count == 8: sys.exit() count += 1 print('ending')结果:12345678 import sys print(sys.

序列化和Json

什么是序列化(picking) - 是Python特有的内存持久化方式,不同的Python程序可以使用picking,而java或者其他语言和python交互就需要使用目前比较广泛的json格式了. - 把变量从内存中(以特殊的二进制等方式)变成可存储或传输的过程称之为序列化. - 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. - 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpicking - 两个Python程序可以通过序列化文件,把各自内

Python序列化之Json基础

python的序列化就是将python的基本对象转换为字符串的过程,反之则是反序列化. 序列化类型: -> import json import pickle 序列化定义: 序列化:对象.列表.字典都是python的基本数据类型,序列化其实就是把这些数据类型转换为字符串. 反序列化:将序列化后得到的字符串转反序列化成python的数据对象.列表.字典等类型 json的作用: 在python的基本数据类型与字符串之间进行相互转换的作用 json.dumps()函数: 将python基本数据类型转换

python序列化和json

python 的序列化和反序列化用于内存之间的共享,包括服务器和客户端的共享,两个Python程序之间的共享,以及以字符串的形式存储到硬盘中. pyhton 的pickle 可以对Python的各种数据类型进行操作,包括类,列表,对象等.pickle中只适用于Python. 硬盘存数据只能是字符串的形式,序列化这种方式实现两个程序之间内存数据的交互 #Python的序列化和反序列化 import pickle li = ['xiaoli','xiaowang','12','3','4'] dum

python-函数式编程,反射,random,md5,pickle,json,re,time

函数式编程的优点: 可扩展性.可复用性(不修改以前代码).可阅读性(初学者通俗易懂) __init__:作为python包文件使用,否则只是个文件夹 __name__:文件内部调用时__name__==' __main__':外部调用时,__name__==文件名 __file__:当前文件路径 1.默认参数使用 >>> def person(name,action='eat...',where='beijing'):...     print name,action,'in '+whe

第二十天,pickle json xml shelve configparser模块

今日内容 1.pcikle 专用于python语言的序列化 2.json 是一种跨平台的数据格式 也属于序列化的一种方式 3.xml 可拓展标记语言 一种编写文档的语法 也支持跨平台 比较json而言 属于重量级 4.shelve 及其简单的序列化模块 只用于python 5 confiqparser 配置文件解析模块 一 pickle pickle是一个用来序列化的模块 序列化是什么? 指的是将内存中的数据结构转化为一种中间格式 并存储到硬盘上 反序列化是什么? 将硬盘上存储的中间格式数据再还