Python之pickle序列化

内存中有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?这取决于你想要怎么保存、怎么重用、发送给谁。很多游戏允许你在退出时保存进度,然后你再次启动的时候回到上次退出的地方。(实际上,很多非游戏程序也会这么干。)在这个情况下,一个捕获了当前进度的数据结构需要在你退出的时候保存到磁盘上,接着你重新启动的时候从磁盘上加载进来。

Python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

什么东西能用pickle模块存储?
--所有python支持的原生类型:布尔、整数、浮点数、复数、字符串、bytes(字节串)对象,字节数组,以及None
--由任何原生类型组成的列表、元组、字典
--由任何原生类型组成的列表、元组、字典和集合组成的列表、元组、字典和集合(可以一直嵌套下去,直至python支持的最大递归层数)
--函数、类和类的实例

d=[1,2,3,4,5,6]
f=file(‘test.txt‘,‘w‘)
f.write(d) // 只能将字符串写入,无法将列表、字典等类型写入文件中,这时使用pickle
f.close()

import pickle
account_info={‘123‘:[‘alex3721‘,125000,1233000],‘355‘:[‘rachel‘,9000,9000]}

f=file(‘account.pkl‘,‘wb‘)
pickle.dump(account_info,f) //把内存里的东西dump到磁盘
f.close()

##反序列化

f=open(‘account.pkl‘,‘rb‘)
account_info=pickle.load(f)
print account_info

#####

pickle
account_info={:[,,],:[,,]}
f=(,)
pickle.dump(account_info,f)

account_info[][]=pickle.dump(account_info,f)
f.close()
f=(,)

,acc1#保存了2次的状态,或者N次
acc2
f.close()
时间: 2024-10-07 16:47:33

Python之pickle序列化的相关文章

【Python之旅】第三篇(二):Pickle序列化

说明:关于Pickle的说明 作如下说明: 序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁.很多游戏允许你在退出的时候保存进度,然后你再次启动的时候回到上次退出的地方.(实际上, 很多非游戏程序也会这么干.) 在这个情况下, 一个捕获了当前进度的数据结构需要在你退出的时候保存到磁盘上,接着在你重新启动的时候从磁盘上加载进来. 什么东西能用pickle模块存储? –所有Python支持的 原生类型

python 跨语言数据交互,json,pickle(序列化).

Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.load json.dudmp ("[11,22]",open('db.txt','w'))   #转换成字符串再保存到该文件. json.lo

python类库32[序列化和反序列化之pickle]

一 pickle pickle模块用来实现python对象的序列化和反序列化.通常地pickle将python对象序列化为二进制流或文件. python对象与文件之间的序列化和反序列化: pickle.dump() pickle.load() 如果要实现python对象和字符串间的序列化和反序列化,则使用: pickle.dumps() pickle.loads() 可以被序列化的类型有: * None,True 和 False; * 整数,浮点数,复数; * 字符串,字节流,字节数组; * 包

python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在python中.一个.py文件就称为一个模块(Module) 使用模块的好处: 提高了代码的可维护性. 其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们编写程序的时候也经常引用其他模块,包括python的内置的模块和第三方模块. 包(package

Python pickle序列化后写入文件,并实现曾加内容

pickle序列化 # _*_coding:utf-8_*_ import pickle import os list_ec = [] while True: if os.path.isfile("course_list"): # 判断文件夹是否存在 with open("course_list", "rb") as f: list_aa = pickle.load(f) f.close() # print(list_aa) # 可以打开,每次读

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

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

Python的json and pickle序列化

json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = { "name":"test", "age":"20", } #json序列化 with open("json_test","w",encoding="utf-8") a

Python之路-json和pickle序列化/反序列化

首先引入json模块 序列化:使用json的dumps方法 反序列化:使用json的loads方法 过程:在json序列化后就可以将序列化的数据类型写入文件,然后在从文件中读出该数据类型,然后在进行反序列化 json对象中的其他的方法:dump(info,f)>>>其中Info是需要序列化的数据,f是一个文件句柄:load(f)>>>使用这两个方法不要在对文件进行读写 pickle和json使用方法类似,只是名字不同且pickle可以处理复杂数据类型而json不能(pi

Python ,pickle

@Python pickle模块学习 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. ------------------------------------------ pickle.dump(obj, file[, protocol]) 序列化对象,并将结果数据流写入到文件对象中.参数protocol是序列化模式,默认值为0,表示以文本的形式序列化.protocol的值还可以是1或2,表示以二进制的形式序列化. -------------------------